引言

在springBoot中,它自动扫描包的时候,只会扫描自己模块下的类。

问题

如果我们不想被Spring容器管理的Bean的路径下不再SpringBoot的包扫描路径下,怎么办呢?如何加载别的第三方Bean呢?

解决

首先我们创建一个工程,另外创建一个与启动类不在一个级别的目录。

  • 第一种方法就是使用在启动类上加上@Import注解。
@Import(value = {Test.class})
  • 第二种方法就是创建spring.factories文件
    现在我们将其改造一下,采用spring.factories的方式去加载Test类,在resources目录下新建一个META-INF的目录,然后再新建一个spring.factories文件,文件内容为:
    下面第二条就是我们自己的类的路径。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=/
com.huawei.it.config.Test

然后在springBoot中的启动类中将@Import注释掉,启动一下,在控制台上就会发现,我们自己的配置类已经加载到Spring容器中去了,所以Spring可以加载一个工程下的任意一下工程类了。

应用

下面就是我在Nacos源码中看到的,可以看到spring.factories文件中内容,与我们自己类加载到Spring容器中是一样的道理。
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐