SpringBoot学习笔记(五)——Springboot中的条件注解
作者:互联网
1.为什么需要有条件注解
只⾃动配置类中,通常能看到很多条件注解(⽐如@ConditionalOnClass、@ConditionalOnBean),这是因为,如果我们要⽤Spring Boot的⾃动配置功能,就会加上@EnableAutoConfiguration注解,从 ⽽就会将解析spring.factories⽂件中的所有⾃动配置类,但是在⼀个项⽬中并不是所有⾃动配置类都要使⽤到。 ⽐如我不需要⽤到MVC,那么WebMvcAutoConfiguration就没什么⽤,⽐如我不⽤Jta,那JtaAutoConfiguration也就没什么⽤,没⽤的配置类,就不要让Spring去解析它。条件注解就⽤来实现这种控制的。2.一个使用条件注解的例子
⽐如WebMvcAutoConfiguration上就有:@ConditionalOnWebApplication(type = Type.SERVLET) @ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class}) @ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
- @ConditionalOnWebApplication(type = Type.SERVLET),表示WebMvcAutoConfiguration只有在应⽤类型是SERVLET类型是才⽣效
- @ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class}),表示只有在项⽬以及依赖中存在这三个类时,WebMvcAutoConfiguration才⽣效
- @ConditionalOnMissingBean({WebMvcConfigurationSupport.class}),表示只有Spring容器中没有WebMvcConfigurationSupport.class类型的Bean时,WebMvcAutoConfiguration才⽣效
3.条件注解的类型
1. ConditionalOnBean:是否存在某个某类或某个名字的Bean 2. ConditionalOnMissingBean:是否缺失某个某类或某个名字的Bean 3. ConditionalOnSingleCandidate:是否符合指定类型的Bean只有⼀个 4. ConditionalOnClass:是否存在某个类 5. ConditionalOnMissingClass:是否缺失某个类 6. ConditionalOnExpression:指定的表达式返回的是true还是false 7. ConditionalOnJava:判断Java版本 8. ConditionalOnJndi:JNDI指定的资源是否存在 9. ConditionalOnWebApplication:当前应⽤是⼀个Web应⽤ 10. ConditionalOnNotWebApplication:当前应⽤不是⼀个Web应⽤ 11. ConditionalOnProperty:Environment中是否存在某个属性 12. ConditionalOnResource:指定的资源是否存在 13. ConditionalOnWarDeployment:当前项⽬是不是以War包部署的⽅式运⾏ 14. ConditionalOnCloudPlatform:是不是在某个云平台上
标签:SpringBoot,SERVLET,Bean,某个,注解,WebMvcAutoConfiguration,class,Springboot 来源: https://www.cnblogs.com/worthmove/p/16690920.html