本文共 1924 字,大约阅读时间需要 6 分钟。
在注解方式实例化Bean之前,我们都是通过XML来配置Bean以及其依赖关系的,造成了项目中有大量的XML文件,使项目变得复杂,不便于维护。所以JavaConfig 就应运而生了,JavaConfig是Spring的一个子项目。它基于Java代码和Annotation注解来描述Bean之间的依赖绑定关系。
@Configuration
注解标注在类上,相当于把该类作为Spring的XML配置文件中的,其作用为:配置Spring容器,需要注意的是: @Scope(”prototype“)
设置为原型作用域@ComponentScan
注解对应Spring的XML配置文件中的<context:component-scan/>
表示启动组件扫描,Spring会自动扫描所有通过注解配置的bean,然后将其注册到IOC容器中,我们可以通过basePackages
属性来指定@ComponentScan自动扫描的范围,如果不指定,则默认从声明@ComponentScan所在类的package进行扫描,正是因为如此,SpringBoot的启动类都是默认在/src/main/java下。
@Import
注解用于导入配置类,应用场景就是一个配置类中的一个Bean依赖于另一个配置类中的一个Bean。
@Import
注解支持导入普通java类,主要用于将多个分散的JavaConfig配置类融合成一个更大的config类。 @Conditional
注解表示满足某种条件之后才开始初始化一个Bean或者启动某些配置,它一般用在由@Component、@Service、@Configuration等注解标识的类上面,或者由@Bean标记的方法上。如果一个@Configuration类标记了 @Conditional,则该类中所有标识了@Bean的方法和@Import注解导入的相关类将遵从这些条件。
如果我们需要自定义自己的条件类,所要做的就是实现Condtition接口,并覆盖它的matches()方法。
当某些属性的值需要配置的时候,我们一般会在applcation.properties文件中新建配置项,然后通过@Value注解来获取配置项,比如下面配置数据源的代码。
@ConfigurationProperties
。这个注解可以把同类的配置信息自动封装成实体类,如获取数据源的代码可以改写成下面这样,由于篇幅的问题这里省略了setter、getter方法,但是实际开发中这个是必须的,否则无法成功注入。 @EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的类
生效。
如果一个配置类只配置@ConfigurationProperties注解
,而没有使用@Component
,那么在IOC容器中是获取不到配置类转化的bean。说白了 @EnableConfigurationProperties
相当于把使@ConfigurationProperties
的类进行了一次注入。
转载地址:http://kyrnz.baihongyu.com/