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