您的位置:首页 > 编程语言 > Java开发

Spring Boot自动配置类

2016-09-17 18:50 645 查看
http://docs.spring.io/spring-boot/docs/current/api/overview-summary.html
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#auto-configuration-classes

前提
1、一般来说,xxxAware接口,都提供了一个setXxx的方法,以便于其实现类将Xxx注入自身的xxx字段中,从而进行操作。
例如 ApplicationContextAware ,就提供了 void setApplicationContext(ApplicationContext applicationContext) throws BeansException; ,从而让其实现可以直接操作 applicationContext 。
2、Spring中的 BeanFactory,这是访问bean container 的root interface。其实现类的对象通常拥有一系列 bean 定义,并以不同的String 名字来区分。
但是,官方文档不建议直接使用这种方式获取bean,而是建议使用注入的方式获取bean(@Autowire)。--这个,前期不能使用初始化注入吧?

正文

Spring Boot提供的自动配置都是位于包 org.springframework.boot.autoconfigure 之下。

注意,
① 这里是Spring Boot提供的,而非第三方(如MyBatis-Spring-Boot-Starter)提供的。
② 不包含Spring Boot Actuator部分的。

Spring Boot的自动配置类可以通过autoconfig report查看,需要开启 --debug 或 -Debug。或者在 Actuator 项目的autoconfig 端点查看。

这里先从Web开始学习

由于Spring Boot的web Starter集成了Spring MVC,而非其他,所以实际上提供的Web自动配置为Spring MVC的自动配置。
Spring MVC的自动配置在包 org.springframework.boot.autoconfigure.web 之下,该包中的内容如下:

public static class BeanPostProcessorsRegistrar implements ImportBeanDefinitionRegistrar, BeanFactoryAware {
// ...
}


View Code
这是个静态内部类,实现了两个接口。

4、接口ImportBeanDefinitionRegistrar

public interface ImportBeanDefinitionRegistrar {
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry);
}


该接口用于在系统处理@Configuration class时注册更多的bean。是bean定义级别的操作,而非@Bean method/instance级别的。

这个方法,应该是在Spring加载bean时被Spring调用。
org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader

未完待续。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: