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

Spring Dependency Inject與Bean Scops注解

Spring Boot配置加載相關(guān)知識(shí)
Spring Boot Actuator快速入門
Spring Boot啟動(dòng) Eureka流程

Spring Boot的啟動(dòng)原理

Spring Boot 的設(shè)計(jì)目標(biāo)

評(píng)論