@Autowired
@Autowired注解用于標(biāo)記Spring將要解析和注入的依賴項(xiàng)。此注解可以作用在構(gòu)造函數(shù)、字段和setter方法上。
作用于構(gòu)造函數(shù)
下面是@Autowired注解標(biāo)注構(gòu)造函數(shù)的使用示例:
作用于setter方法
下面是@Autowired注解標(biāo)注setter方法的示例代碼:
作用于字段
@Autowired注解標(biāo)注字段是最簡單的,只需要在對應(yīng)的字段上加入此注解即可,示例代碼如下:
###@Primary
當(dāng)系統(tǒng)中需要配置多個具有相同類型的bean時,@Primary可以定義這些Bean的優(yōu)先級。下面將給出一個實(shí)例代碼來說明這一特性:
輸出結(jié)果:
this is send DingDing method message.
@PostConstruct與@PreDestroy
值得注意的是,這兩個注解不屬于Spring,它們是源于JSR-250中的兩個注解,位于common-annotations.jar
中。@PostConstruct注解用于標(biāo)注在Bean被Spring初始化之前需要執(zhí)行的方法。@PreDestroy注解用于標(biāo)注Bean被銷毀前需要執(zhí)行的方法。下面是具體的示例代碼:
@Qualifier
當(dāng)系統(tǒng)中存在同一類型的多個Bean時,@Autowired在進(jìn)行依賴注入的時候就不知道該選擇哪一個實(shí)現(xiàn)類進(jìn)行注入。此時,我們可以使用@Qualifier注解來微調(diào),幫助@Autowired選擇正確的依賴項(xiàng)。下面是一個關(guān)于此注解的代碼示例:
@SpringBootApplication
@SpringBootApplication
注解是一個快捷的配置注解,在被它標(biāo)注的類中,可以定義一個或多個Bean,并自動觸發(fā)自動配置Bean和自動掃描組件。此注解相當(dāng)于@Configuration
、@EnableAutoConfiguration
和@ComponentScan
的組合。
在Spring Boot應(yīng)用程序的主類中,就使用了此注解。示例代碼如下:
@SpringBootApplication
public class Application{
public static void main(String [] args){
SpringApplication.run(Application.class,args);
}
}
@EnableAutoConfiguration
@EnableAutoConfiguration注解用于通知Spring,根據(jù)當(dāng)前類路徑下引入的依賴包,自動配置與這些依賴包相關(guān)的配置項(xiàng)。
@ConditionalOnClass與@ConditionalOnMissingClass
這兩個注解屬于類條件注解,它們根據(jù)是否存在某個類作為判斷依據(jù)來決定是否要執(zhí)行某些配置。下面是一個簡單的示例代碼:
@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoConfiguration {
//...
}
@ConditionalOnBean與@ConditionalOnMissingBean
這兩個注解屬于對象條件注解,根據(jù)是否存在某個對象作為依據(jù)來決定是否要執(zhí)行某些配置方法。示例代碼如下:
@Bean
@ConditionalOnBean(name="dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory(){
//...
}
@Bean
@ConditionalOnMissingBean
public MyBean myBean(){
//...
}
@ConditionalOnProperty
@ConditionalOnProperty注解會根據(jù)Spring配置文件中的配置項(xiàng)是否滿足配置要求,從而決定是否要執(zhí)行被其標(biāo)注的方法。示例代碼如下:
@Bean
@ConditionalOnProperty(name="alipay",havingValue="on")
Alipay alipay(){
return new Alipay();
}
@ConditionalOnResource
此注解用于檢測當(dāng)某個配置文件存在使,則觸發(fā)被其標(biāo)注的方法,下面是使用此注解的代碼示例:
@ConditionalOnResource(resources = "classpath:website.properties")
Properties addWebsiteProperties(){
//...
}
@ConditionalOnWebApplication與@ConditionalOnNotWebApplication
這兩個注解用于判斷當(dāng)前的應(yīng)用程序是否是Web應(yīng)用程序。如果當(dāng)前應(yīng)用是Web應(yīng)用程序,則使用Spring WebApplicationContext,并定義其會話的生命周期。下面是一個簡單的示例:
@ConditionalOnWebApplication
HealthCheckController healthCheckController(){
//...
}
@ConditionalExpression
此注解可以讓我們控制更細(xì)粒度的基于表達(dá)式的配置條件限制。當(dāng)表達(dá)式滿足某個條件或者表達(dá)式為真的時候,將會執(zhí)行被此注解標(biāo)注的方法。
@Bean
@ConditionalException("${localstore} && ${local == 'true'}")
LocalFileStore store(){
//...
}
@Conditional
@Conditional注解可以控制更為復(fù)雜的配置條件。在Spring內(nèi)置的條件控制注解不滿足應(yīng)用需求的時候,可以使用此注解定義自定義的控制條件,以達(dá)到自定義的要求。下面是使用該注解的簡單示例:
@Conditioanl(CustomConditioanl.class)
CustomProperties addCustomProperties(){
//...
}
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62999 -
容器
+關(guān)注
關(guān)注
0文章
499瀏覽量
22130 -
spring
+關(guān)注
關(guān)注
0文章
340瀏覽量
14396
發(fā)布評論請先 登錄
相關(guān)推薦
評論