@conditional 通過改註解能判讀根據條件動態建立bean
person類
配置類public class person
@override
public string tostring() ';
}public person(string name, int age)
public string getname()
public void setname(string name)
public int getage()
public void setage(int age)
}
新建linuxcondition 實現 condition 介面import com.myspring.condition.linuxcondition;
import com.myspring.condition.windowscontidion;
import com.myspring.entity.person;
import org.springframework.context.annotation.*;
@componentscan(value = "com.myspring")
@configuration
public class mainconfig2
@conditional(linuxcondition.class)
@bean("linus")
public person person02()
}
新建windowscondition 實現 condition 介面import org.springframework.beans.factory.beanfactory;
import org.springframework.beans.factory.config.configurablebeanfactory;
import org.springframework.beans.factory.support.beandefinitionregistry;
import org.springframework.context.annotation.condition;
import org.springframework.context.annotation.conditioncontext;
import org.springframework.core.env.environment;
import org.springframework.core.type.annotatedtypemetadata;
public class linuxcondition implements condition
return false;
}}
測試類package com.myspring.condition;
import org.springframework.context.annotation.condition;
import org.springframework.context.annotation.conditioncontext;
import org.springframework.core.env.environment;
import org.springframework.core.type.annotatedtypemetadata;
public class windowscondition implements condition
return false;
}}
執行結果@test
public void test2()
// 獲取環境變數 windows 10
string property = environment.getproperty("os.name");
system.out.println(property);
system.out.println(persons);
}
person
bill
備註
@conditional 不僅能放在方法上 也能放在類上。
當放在類上時,表明該類的建立都要符號 該註解的條件
條件註解 Conditional
可以讓某乙個bean 在某些條件下 加入ioc容器,其他情況下不加ioc容器。a.準備普通bean b.增加條件bean 給每個bean設定條件,必須實現condition介面 如 oilcarcondition類 public class oilcarcondition implements co...
Conditional條件裝配原理
conditional條件裝配是spring4引入的新特性,與 profile類似 偏向於靜態啟用和配置 而 conditional關注與執行時的動態選擇。api如下 target retention retentionpolicy.runtime documented public inte ce...
Conditional條件初始化bean的配置
在某些情況下我們無法進行bean的初始化。由於某種原因如果繼續初始化很可能丟擲異常。這個時候更好的做法是不進行初始化。例如在資料庫操作時,如果沒有配置資料來源的資訊。我們希望進行datasource的初始化。這時就可以使用 conditional來達到目的。在需要判斷的方法中加入 condition...