配置类相关:
@PropertySource(value = "classpath:test.properties") //我们都把配置文件写到application.yml中。有时我们不愿意把配置都写到application配置文件中,这时需要我们自定义配置文件,比如test.properties:
@ConfigurationProperties(prefix = "com.forezp") //在配置文件中的前缀,属性自动注入
@EnableConfigurationProperties //@ConfigurationProperties注解主要用来把properties配置文件转化为bean来使用的,而@EnableConfigurationProperties注解的作用是@ConfigurationProperties注解生效。如果只配置@ConfigurationProperties注解,在IOC容器中是获取不到properties配置文件转化的bean的。一般不用加,因为在我们的的appliacation的启动类@SpringBootApplication注解中已经包含了@ComponentScan和@EnableConfigurationProperties注解。
@EntityScan("com.ihrm") 实体类扫描包
@SpringBootApplication(scanBasePackages = "com.ihrm") 启动类扫描
@ComponentScan(basePackages={"com.xuecheng.manage_cms"})//扫描本项目下的所有类
自动配置 (Spring-boot-autoconfigure包下的)
https://www.jianshu.com/p/68a75c093023
@ConditionalOnBean 配置了某个特定bean (仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)
@ConditionalOnBean(Xxxx.class) 仅仅在当前上下文中存在Xxxx对象时,才会实例化一个Bean 也就是 只有当Xxxx.class 在spring的applicationContext中存在时 这个当前的bean才能够创建
------------------第二种用法:用name来指定
@ConditionalOnBean(name="redisTemplate")
@ConditionalOnMissingBean 没有配置特定bean (仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean)
@ConditionalOnMissingBean(Xxxx.class) 当前上下文中不存在Xxxx对象时,才会实例化一个Bean 也就是 只有当Xxxx.class 在spring的applicationContext中不存在时 这个当前的bean才能够创建
@ConditionalOnClass (xxx.class) (当xxx.class存在时,才会实例化一个Bean)
@ConditionalOnMissingClass (当xxx.class不存在时,才会实例化一个Bean)
@ConditionalOnProperty 给定配置属性中包含某个值
@Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.TYPE, ElementType.METHOD }) @Documented @Conditional(OnPropertyCondition.class) public @interface ConditionalOnProperty { String[] value() default {}; //数组,获取对应property名称的值,与name不可同时使用 String prefix() default "";//property名称的前缀,可有可无 String[] name() default {};//数组,property完整名称或部分名称(可与prefix组合使用,组成完整的property名称),与value不可同时使用 String havingValue() default "";//可与name组合使用,比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置 boolean matchIfMissing() default false;//缺少该property时是否可以加载。如果为true,没有该property也会正常加载;反之报错 boolean relaxedNames() default true;//是否可以松散匹配,至今不知道怎么使用的 } }
如果该值为空,则返回false;
如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。
如果返回值为false,则该configuration不生效;为true则生效。
@ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "true")
@ConditionalOnResource classpath有指定资源
当指定的资源文件出现在classpath中生效 @Bean @ConditionalOnResource(resources="classpath:shiro.ini") protected Realm iniClasspathRealm()
@ConditionalOnWebApplication 是一个web应用程序
@ConditionalOnNotWebApplication 不是一个web应用程序