SpringBoot对于Spring的扩展
Springboot所提供的注解
@Configuration:用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
@ConditionalOnProperty:
- prefix:属性的前缀部分。
- name:属性名称。
- havingValue:属性的值与
havingValue
相等时条件成立(默认不指定)。 - matchIfMissing:如果属性未定义,是否加载配置(默认
false
,即未定义时不加载)。 - value:赋予属性值的,是否有值通过matchIfMissing来设置。
或者将value替换成name,matchIfMissing替换为havingValue
效果是一样的。
@ConditionalOnBean:是否会加载Bean
如果存在括号中的类,这个Bean就会加载,没有则不会进行加载,这个不仅可以作用在类上,还可以作用在方法上面进行使用。
这个是判断是否需要注入到IOC容器里面,是以IAccountService.class是否存在作为标准,存在进行加载,不存在则不加载。
@ConditionalOnMissingBean与上面@ConditionalOnProperty的作用是相反的。
@ConditionalOnClass:JVM 中存在指定的 Class 进行条件注入
Springboot自定义一个条件注解:
@Target:用来表示注解作用范围,超过这个作用范围,编译的时候就会报错。
@Retention:用于指定注解的生命周期,即注解在什么阶段仍然有效。
之后定义一个Condition接口的实现类,因为上面的那个注解也是作用在Condition这个接口的。
之后可以根据这个ConditionalOnImoocCondition类来进行使用。
这里的value的值需要是on需要对应上面那个ConditionalOnImoocCondition里面所等于的值,从而实现对于IOC容器的一个加载。