springboot-註解使用(4)-@Value @PropertySource @Autowired @qualifier @Primary @Resource @Profile

@Value 可以爲屬性注入某些值,支持字符串,spel表達式和配置文件的方式

@Value("caraliu")
private String name;

@Value("#{29-5}")
private int age;

@Value("${spring.desc}")
private String desc;

在使用配置文件的時候,要將配置文件讀入運用中:

在配置類上加入: @PropertySource(value={"classpath:/caraliu.properties"})

然後可以到運用的環境中讀取到spring.desc 這個值caraliu.properties

通過:applicationContext.getEnvironment().getProperty("spring.desc")可以獲取

 

@Autowired 依賴注入,根據類型注入(如果該類型有多個類,那麼會根據屬性名去拿對應的那個)(默認時一定要裝入一個類,如果沒有該類型的類,會拋出異常,可以設@Autowired(required = false),那麼沒有就爲null,不會拋出異常)

也可以通過@Qualifier("myService")聲明注入的那個bean的id

@Primary 首選被裝入,加入這個註解@Qualifier("myService")可以根據id聲明注入對應的bean
@Resource 根據id名稱注入,默認是屬性名,也可以指定id(java規範,其他ioc框架也能用)

 @Inject要使用前要引入pom的依賴。 (java規範,其他ioc框架也能用)

 xxxAware可以將xxx注入到當前類中,那麼就可以使用xxx的功能,xxxAware的功能是通過xxxProcessor來實現的,每一個xxxAware都會有對應的xxxProcessor處理

 

激活相應的環境 @Profile("default") 可以標註在類上(作用範圍整個類)或者方法上(作用範圍是該方法)

假設@Profile("dev")如何不激活dev環境,那麼相應的配置不起作用。

 AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
        applicationContext.getEnvironment().setActiveProfiles("dev","test");
        applicationContext.register(Configure.class);
        applicationContext.refresh();

經過上述配置,dev環境的配置都會起作用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章