@conditional註解通常配合@bean和@configuration使用,在配置時用於判斷spring容器是否注入某個實體類。
@conditional的定義:
從**中可以看到此註解需要傳入class型別的陣列,並且這些class都繼承condition類
點開condition原始碼,可以看到:
condition介面中定義了乙個返回值為布林值的抽象方法,因此可以聯想到 @conditional註解就是根據這個返回的布林值判斷是否將當前類注入spring容器的。
了解完原理,我們來實踐一下
1、首先建立乙個實體類
package com.shijinyi.demo.model;
import lombok.getter;
import lombok.setter;
import lombok.tostring;
/** * @author : s jy
* @description :
* @date : 2019/11/21 9:36
*/@setter
@getter
@tostring
public class person
}
2、將實體類注入spring容器(先不加@conditional判斷)
@configuration
public class beanconfig
@bean(name = "jay")
// @conditional(linuxcondition.class)
public person person2()
}
3、junit測試下是否注入成功
@runwith(springrunner.class)
@springboottest
@test
public void test1()
}
成功注入:
4、編寫兩個不同的condition介面實現類 並測試@conditional註解測試
public class condition1 implements condition
}public class condition2 implements condition
}
@configuration
public class beanconfig
@bean(name = "jay")
@conditional(condition2.class)
public person person2()
}
測試結果:
經過**實踐,也了解了@conditional註解的用法。
多個condition
@configuration
public class beanconfig )
public person person1()
@bean(name = "jay")
@conditional(condition2.class)
public person person2()
}
spring註解之 Scope註解
1,scope註解是什麼 scope註解是springioc容器中的乙個作用域,在 spring ioc 容器中具有以下幾種作用域 基本作用域singleton 單例 prototype 多例 web 作用域 reqeust session globalsession 自定義作用域 a.single...
spring註解之 value註解
首先在xml中定義乙個bean如下 把對應的引數以property中value的形式注入 測試 如下 根據bean id獲取bean物件 system.out.println bean 執行結果如下 可以發現已經獲取到xml中配置的屬性了 user username zhangsan,age 26 ...
spring註解之 Lazy註解
1,lazy註解是什麼 lazy註解用於標識bean是否需要延遲載入,原始碼如下 target retention retentionpolicy.runtime documented public inte ce lazy只有乙個引數,預設是true,也就是說只要加了這個註解就會延遲載入 2,la...