SpringBoot
【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】
SpringBoot 原理篇
文章目录
- SpringBoot
- SpringBoot 原理篇
- 1 自动配置
- 1.18 自动配置原理
- 1.18.1 变更自动配置
- 1.18.2 小结
- 1.18.3 总结
1 自动配置
1.18 自动配置原理
1.18.1 变更自动配置
既然这个自动配置这么好用,自己也想搞这种自动配置的东西,可以实现吗?
【答案是当然的】
看看MP 的自动配置类
点开META-INF
可以看到它也有这个东西
做自动配置方法其实很简单,就是在spring.factories 做配置就行了
【直接开干】
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.dingjiaxiong.bean.CartoonCatAndMouse
OK, 现在其实就已经完成了
修改一下运行程序
我现在不导入了,让它自动配置
我超!这也行
再整点儿花活儿
我现在给它加点条件,意思有redis ,我才被加载
@ConditionalOnClass({RedisOperations.class})
但是我在pom 文件中又把redis 依赖给注掉
很明显, 都红了,就不会自动配置了
这样看不出来效果,因为编译通不过了已经,恢复成全路径名
@ConditionalOnClass(name = "org.springframework.data.redis.core.RedisOperations")
再次执行运行类
没毛病,这次就加载不到了,自动配置失败
如果把坐标放开
这样就又加载到了
这是加,那么问题又来了,现有的我们能不能把它去了【当然】
跟老师一样,
就去你
修改配置文件
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration
OK,再次运行,看看它还可以加载不
没毛病
这是在配置文件中写
也可以在启动类上写
例如,
我现在还想把它 也排除掉
@SpringBootApplication(excludeName = "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration")
OK, 直接启动
肯定就没有加载了
OK,回顾一下
- 自定义自动配置(META-INF/spring.factories)
- 控制SpringBoot内置自动配置类加载
- 变更自动配置:去除tomcat自动配置(条件激活),添加jetty自动配置(条件激活)
1.18.2 小结
- 通过配置文件exclude属性排除自动配置
- 通过注解@EnableAutoConfiguration属性排除自动配置项
- 启用自动配置只需要满足自动配置条件即可
- 可以根据需求开发自定义自动配置项
1.18.3 总结
- bean加载方式(8+)
- bean加载控制(编程 & 注解)
- bean依赖属性配置(Properties)
- 自动配置原理
- 变更系统自动配置(配置文件、注解属性)
- 添加自定义自动配置(META-INF/spring.factories)