Springboot框架的常用注解和作用


@SpringBootApplication,替代@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
@ImportAutoConfiguration,導入配置類,一般做測試的時候用,正常優先使用@EnableAutoConfiguration
@SpringBootConfiguration,替代@Configuration
@ImportResource,將資源導入容器中
@PropertySource,導入properties文件
@PropertySources,@PropertySource的集合
@Role,bean角色定義ROLE_APPLICATION(默認值)、ROLE_SUPPORT(輔助角色)、ROLE_INFRASTRUCTURE(后台角色,用戶無感)
@Scope,指定bean的作用域,默認singleton,其他包括prototype、request、session、globalSession
@Lazy,使bean懶加載,取消bean預初始化。用法:bean注冊的地方加上@Lazy和用的地方加上@Lazy
@Primary,自動裝配時當出現多個Bean候選者時,被注解為@Primary的Bean將作為首選者,否則將拋出 異常
@Profile,指定bean在哪個環境被激活
@DependsOn,依賴的bean注冊完成,才注冊當前類,依賴bean不存在會報錯。用於控制bean加載的順序
@PostConstruct,bean的屬性都注入完之后,執行注解標注的方法進行初始化工作
@Autowired, 默認按類型裝配,如果我們想使用按名稱裝配,可以結合@Qualifier注解一起使用
@Lookup,根據方法返回的類型,去容器中撈出對應的bean。適合單例作用域引用非單例的情況。
@Qualifier,申明bean名字,且可以按bean名字加載bean
@Required,檢查bean的屬性setXXX()方法,要求屬性在配置階段必須已配置
@Value,值注入,@Value("${xxx}")注入配置文件中的值;@Value("#{xxx}")支持spel,可注入bean、常量等
@SpringBootConfiguration,包裝@Configuration
@Description,添加bean的文字描述
@EnableAspectJAutoProxy,啟動AspectJ自動代理
@EnableLoadTimeWeaving,啟用類加載器動態增強功能,使用Instrumentation實現
@AutoConfigurationPackage,包含該注解的package會被AutoConfigurationPackages注冊
@AutoConfigureBefore,在指定配置類初始化前加載
@AutoConfigureAfter,在指定配置類初始化后加載
@AutoConfigureOrder,指定配置類初始化順序,越小初始化越早

組件注冊
@ComponentScans,@ComponentScan集合
@ComponentScan,掃描啟動類目錄下的所有符合條件的Bean,並注入容器
@Component,泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注
@Controller,用於標注控制層組件
@Repository,用於標注數據訪問組件,即DAO組件
@Service,用於標注業務層組件
@Configuration,表名類里的包含@Bean注解標注的方法
@Bean,用在@Configuration和@Component注解下的類里面的方法上。@Configuration類里面,@Bean注解的方法被類中其他方法調用時,會注入bean而不會執行方法本身;@Component類里面,@Bean注解的方法被類中其他方法調用時,會執行方法本身,不會注入bean;被注解的方法如果是靜態(static),bean的注冊時間可能比所在類的注冊時間早。
@EnableAutoConfiguration,開啟自動注冊配置文件,例如會去META-INF/spring.factories找需要自動轉載的類
@Import,將class導入容器中

選擇器
@Conditional,當指定的條件都滿足時,組件才被注冊
@ConditionalOnBean,指定bean在上下文中時,才注冊當前bean。用在方法上,則默認依賴類為方法的返回類型
@ConditionalOnClass,指定類在classpath上時,才初始化當前bean。用在方法上,則默認依賴類為方法的返回類型
@ConditionalOnCloudPlatform,在指定雲平台才注冊配置
@ConditionalOnExpression,指定spel為true時注冊配置
@ConditionalOnJava,在指定java版本時注冊配置
@ConditionalOnJndi
@ConditionalOnMissingBean,指定bean不在上下文中時,才初始化當前bean。用在方法上,則默認依賴類為方法的返回類型
@ConditionalOnMissingClass,指定類不在classpath上時,才初始化當前bean。用在方法上,則默認依賴類為方法的返回類型
@ConditionalOnNotWebApplication,不是在web環境才注冊配置
@ConditionalOnProperty,配置文件中的值與指定值是否相等,相等才注冊配置
@ConditionalOnResource,指定resources都在classpath上才注冊配置
@ConditionalOnSingleCandidate,上下文中只有一個候選者bean時才注冊配置
@ConditionalOnWebApplication,是在web環境才注冊配置

緩存
@EnableCaching,開啟緩存配置,支持子類代理或者AspectJ增強
@CacheConfig,在一個類下,提供公共緩存配置
@Cacheable,放着方法和類上,緩存方法或類下所有方法的返回值
@CachePut,每次先執行方法,再將結果放入緩存
@CacheEvict,刪除緩存
@Caching,可以配置@Cacheable、@CachePut、@CacheEvict

定時器
@EnableScheduling,開啟定時任務功能
@Scheduled,按指定執行周期執行方法
@Schedules,包含多個@Scheduled,可同時運行多個周期配置
@EnableAsync,開啟方法異步執行的能力,通過@Async或者自定義注解找到需要異步執行的方法。通過實現AsyncConfigurer接口的getAsyncExecutor()和getAsyncUncaughtExceptionHandler()方法自定義Executor和異常處理。
@Async,標記方法為異步線程中執行

注入配置文件properties
@EnableConfigurationProperties,啟動@ConfigurationProperties功能
@ConfigurationProperties,將properties文件里的內容,自動注入bean對應的屬性中
@DeprecatedConfigurationProperty,用在配置文件的getter()方法上,標記字段已經過期,並提示替換的字段。一般給spring-boot-configuration-processor使用。
@NestedConfigurationProperty,標記在配置文件的字段上,提示spring-boot-configuration-processor,配置包含嵌套的配置。
spring-configuration-metadata.json 提供配置的元信息,在寫properties配置時,會有語法提示。在項目中引入spring-boot-configuration-processor項目,會掃描@ConfigurationProperties注解,自動生成spring-configuration-metadata.json


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM