博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot的注解详解
阅读量:4356 次
发布时间:2019-06-07

本文共 2716 字,大约阅读时间需要 9 分钟。

配置类相关:

@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;//是否可以松散匹配,至今不知道怎么使用的  } }
通过其两个属性
name以及
havingValue来实现的,其中
name用来从
application.properties中读取某个属性值。
如果该值为空,则返回false;
如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。
如果返回值为false,则该configuration不生效;为true则生效。
@ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "true")
就是说 配置文件中 有没有 guns.spring-session-open的属性,有的话,取到这个属性的值,如何取到的值和havingValue的值一样就注册,不一样就不注册

@ConditionalOnResource classpath有指定资源

当指定的资源文件出现在classpath中生效@Bean@ConditionalOnResource(resources="classpath:shiro.ini")protected Realm iniClasspathRealm()

@ConditionalOnWebApplication 是一个web应用程序
@ConditionalOnNotWebApplication 不是一个web应用程序

 

转载于:https://www.cnblogs.com/coder-lzh/p/8983857.html

你可能感兴趣的文章
RHEL 7 安装步骤详解
查看>>
TCP三次握手应用及原理
查看>>
ARP协议揭密
查看>>
自动同步自动备份两台电脑文件的方法
查看>>
【BZOJ4816】【SDOI2017】数字表格 [莫比乌斯反演]
查看>>
安装xampp后,出现“Apache 2 Test Page powered by CentOS“
查看>>
控件属性使用代码动代绑定
查看>>
Linux下查看文件内容的命令
查看>>
子网划分
查看>>
Python系列文章索引
查看>>
iMuseum
查看>>
xshell & xftp
查看>>
Cassandra1.2文档学习(16)—— 模式的变化
查看>>
Linux文件系统
查看>>
001---Python简介
查看>>
第一次JAVA作业
查看>>
解决请求接口要以JSON格式请求后端的问题
查看>>
[CRM]单据自定义后台更新T_BillControl中的FDataBind(wsh)
查看>>
事件委托
查看>>
浅入深出Vue:路由
查看>>