当我们自己生成一个springboot项目的jar包的时候,假设我们在另外一个springboot项目里面引用我们生成的jar包,如何在这个项目启动的时候自动注册jar包里面的bean呢?
方式1:
在生成包的时候在META-INF这个文件夹里面生成一个spring.factories文件,在这个文件里面注册我们的config配置类
方式2:
使用@Enable注解的方式
实现过程
方式1:通过spring.factories文件注册
1、构建一个spring项目 autoconfigtest
2、pom引用内容如下
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.2.RELEASE</version> <scope>provided</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.2.2.RELEASE</version> <scope>provided</scope> <optional>true</optional> </dependency>
3、编写配置类 TestAutoConfiguration
4、编写spring.factories内容
5、打包 查看生成的包的内容
6、新建一个springboot项目testapp
7、在pom中新增对autoconfigtest包的引用
8、在springboot启动类里面获取name为person的bean,看是否能获取到
9、查看执行结果,可以看到是可以获取到person这个bean的
方式2:通过@Enable注解的方式
1、删除上面autoconfigtest项目中的spring.factories文件
2、编写@Enable注解类 EnableTestAutoConfig
3、打包 查看包内容
4、此时直接执行testapp项目可以看到结果报错
可以看到报错信息提示没有找到name为person的bean
5、修改testapp的启动类,在类上面添加@EnableTestAutoConfig的注解
6、此时再执行一下可以看到获取到了person这个bean