SpringBoot常用注解

浪尽此生 提交于 2020-04-08 11:54:36
  • @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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!