JavaConfig
,是在Spring 3.0
开始从一个独立的项目并入到Spring
中的。JavaConfig
可以看成一个用于完成Bean
装配的Spring
配置文件,即Spring
容器,只不过该容器不是XML
文件,而是由程序员使用Java
自己编写的Java
类。
一、@Configuration 注解的使用
- 从
Spring3.0
,@Configuration
用于定义配置类,可替换xml
配置文件,被注解的类内部包含有一个或多个被@Bean
注解的方法
二、@Component 的注解的使用
- 一旦使用关于
Spring
的注解出现在类里,例如别的地方需要使用这个类,要用到@Autowired
注解,被注解的这个类是从Spring
容器里取出来的,那调用的实现类也需要被Spring容器管理,加上@Component
- 把普通
pojo
实例化到spring容器中,相当于配置文件中的<bean id="" class=""> - 泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于
@Controller
、@Service
、@Repository
的时候),我们就可以使用@Component
来标注这个类
@Controller
控制器 (注入服务)@Service
服务(注入dao
)@Repository
(实现dao
访问)
三、@Configuration和@Component的区别
- 如果使用
@Configuration
,所有用@Bean
标记的方法会被包装成CGLIB
的wrapper
其工作原理是:如果方式是首次被调用那么原始的方法体会被执行并且结果对象会被注册到Spring
上下文中。之后所有的对该方法的调用仅仅只是从Spring
上下文中取回该对象返回给调用者 - 如果使用
@Component
,所有用@Bean
只是纯JAVA
方式的调用,需要使用到@Autowired
注解,多次调用该方法返回的是不同的对象实例。
四、@Bean注解的使用
Spring
的@Bean
注解用于告诉方法,产生一个Bean
对象,然后这个Bean
对象交给Spring
管理。产生这个Bean
对象的方法Spring
只会调用一次,随后这个Spring
将会将这个Bean
对象放在自己的IOC
容器中。SpringIOC
容器管理一个或者多个bean
,这些bean
都需要在@Configuration
注解下进行创建,在一个方法上使用@Bean
注解就表明这个方法需要交给Spring
进行管理。
五、@Bean和@Autowired的区别
我也引用一下最漂亮的回答
@Bean
告诉Spring
:”这是这个类的一个实例,请保留它,并在我请求时将它还给我“@Autowired
说:”请给我一个这个类的实例,例如,一个我之前用@Bean
注解创建的实例“
六、什么是POJO
Plain Ordinary Java Object
:简单普通的java
对象- 有一些
private
的参数作为对象的属性及其getter
、setter
方法的类 POJO
主要用于数据的临时传递,它只能装载数据, 作为数据存储的载体,不包含业务逻辑的单纯用来存储数据的java
类
七、@ConfigurationProperties注解
java config
是指基于java
配置的spring
,传统的Spring
一般都是基本xml
配置的,后来spring3.0
新增了许多java config
的注解,特别是spring boot
,基本都是清一色的java config
。@ConfigurationProperties
的POJO
类的命名比较严格,因为它必须和prefix的后缀名要一致,不然值会绑定不上,特殊的后缀名是”driver-class-name
“这种带横杠的情况,在POJO
里面的命名规则是下划线转驼峰就可以绑定成功,所以就是”driverClassName
“@ConfigurationProperties
和@Value
有着相同的功能,但是@ConfigurationProperties
的写法更为方便
八、@Data注解的使用
- 提高代码的简洁,使用这个注解可以省去代码中大量的
get()
、set()
、toString()
等方法