SpringBoot自动配置之@EnableAutoConfiguration注解
前言
你有想过SpringBoot为什么能够自动的帮我们创建一个Bean对象么?或许在我们使用的时候只需要在自己自定义的配置文件中加入@Bean对象就可以,但SpringBoot是如何来创建的呢。
@EnableAutoConfiguration注解
其实SpringBoot自动配置的原理主要是用的这个@EnableAutoConfiguration注解,其原理为以下三点:
(1)在@EnableAutoConfiguration注解内部使用@Import(AutoConfigurationImportSelector.class)来加载配置类;
(2)配置文件位置:META-INF/spring.factories,该配置文件中定义了大量的配置类,当SpringBoot项目启动时,会自动加载这些配置类,初始化Bean;
(3)并不是所有的Bean都会被初始化,在配置类文件中使用Condition来加载满足条件的Bean。
一个简单的案例
上面的原理看上去还是不太好理解的,这个需要查看源码结合理解,接下来我就就一个简单的例子来解释一下。
一个简单的需求:让SpringBoot自动帮我们创建一个User和Role的Bean对象。
第一步,自定义配置类
package cs.yangtze.springboot_enable_other.config;
import cs.yangtze.springboot_enable_other.entity.Role;
import cs.yangtze.springboot_enable_other.entity.User;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;