上一篇 功能模块化(aop,filter),功能打包jar包,无法实现效果
这是对上篇的补充,另一种方法
上一篇是用注解@ComponentScan扫描bean从而注册到上下文,今天这篇学习一下,springboot的starter是如何自动装配的。
原理是这个: (具体的源码就不分析)
spring-boot启动的时候会找到starter jar包中的resources/META-INF/spring.factories文件,根据spring.factories文件中的配置,找到需要自动配置的类。
根据如上所述,只有两个步骤
-
步骤一
- spring.factories
- 在resources/META-INF下创建spring.factories文件,
- 内容:
// 后面是配置类(自己定义的,第二步会讲) org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.zzg.CloudAutoConfiguration
- spring.factories
-
步骤二
- 核心配置类
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration //用于扫描本包下的所有bean //@ComponentScan public class CloudAutoConfiguration { //不需要@ComponentScan 也可注册 @Bean @ConditionalOnMissingBean public String greeter() { return new String(); } }
- 建议使用@ComponentScan扫描的方式,这样就可以和普通服务一样的写bean
结尾
用起来是不是很简单