一,@Configuration
概述
是spring里面的类,其实就是取代xml配置实例化bean的,是一个配置类,声明这个类是一个作为配置类,取代xml中的bean注册对象的,一般和@Bean以及@Scope注解配合使用,将bean对象注入并交给Spring来进行管理,当然他本身也是一个类,由@component修饰,也是一个交给Spring管理的bean,所以也拥有@component功能,可以getBean获取此对象,有一个属性proxyBeanMethods,为true的时候,是保持单例对象,为false的时候,是不进行ioc容器的检查,而是简单的调用方法创建对象,可能会有多个实例对象存在。
注解图
使用过程
作用
主要是用于注入一些Bean对象到IOC容器,比如注入dateSource,注入一些自己需要配置的类交给Spring来管理,就是bean注册以及实例化的。
二,@Value
概述
此注解也是Spring 中的,可以从配置文件中注入一些属性到业务层代码中去,一般是有两种格式,是${}和#{},一般我们使用的都是${},使用这个变量,可以注入字符串,可以注入list等,都是可以的,类型按照规则匹配即可,这也是我们经常需要使用的,是读取配置文件中的属性;#{}使用的就是直接注入当前配置的属性,或者注入其他bean的属性,这种用法和情景在平时很少使用。
注解图
使用过程
${}
#{}
作用
${}主要是使用这个,注入配置文件中的属性值,可以支持一些复杂的数据类型,方便注入配置可变的属性,注意当配置文件中的属性不存在的时候,会报错,我们可以使用给一个默认值,也可以使用下面的@ConfigurationProperties注解进行属性的注入。
三,@ConfigurationProperties
概述
此注解是SpringBoot中的注解,主要是三种使用场景,主要就是也是读取配置文件的属性,这个读取属性,可以将属性统一配置到一个实体类中去,这样使用的时候,就可以从全局中获取,不需要我们在各个地方注入,可以统一来进行管理,主要是用于配置文件中的属性注入。
注解图
使用过程
属性注入
注:注入属性,统一管理,不会报错,建议和@RefreshScop(是springCloud的注解)注解配置使用,用于可以刷新配置,当Bean被实例化时,@ConfigurationProperties会将对应前缀的后面的属性与Bean对象的属性匹配。符合条件则进行赋值。
在配置类的Bean定义
注:这里便是将前缀为“spring.datasource.primary”的属性,赋值给DataSource对应的属性值。
通过@EnableConfigurationProperties定义为Bean
注:通过@EnableConfigurationProperties对KafkaProperties进行实例化时,便会使用到@ConfigurationProperties的功能,对属性进行匹配赋值。就可以使用bean注册,使用bean。
作用
主要就是配置问价中的属性和java类定义的属性进行绑定在注入,对属性赋值,一般我们建议使用此注解进行注入属性,而且再Springcloud中可以配合使用,刷新配置文件中的值,@value也可以使用,如果只是一个属性的话,可以建议使用。
@EnableConfigurationProperties
其实这个注解就是和@ConfigurationProperties注解配合使用,进行属性注入的绑定,就是将配置文件中的属性和@ConfigurationProperties修饰的类进行属性绑定,并交给到Spring来进行管理,当然 也可以只使用@ConfigurationProperties并使用@Component修饰,交给spring来进行管理,也可以的。一般我们是这样使用的,不过可以看下KafkaProperties的使用,就可以发现是使用了这种配合的注解。
四,总结
主要是讲解属性注入的使用,我们可以根据不同的场景使用不同的配置进行合理的使用注解,没有最好的,只有合适才是最好的。