文章目录
Springboot配置扫描其它模块路径的方法
springboot默认会扫描启动类所在的包及其子包;如果想要在启动类所在包以外定义控制器的话需要在启动类重写@ComponentScan。
总结: SpringBoot在写启动类的时候如果不使用@ComponentScan指明对象扫描范围,默认指扫描当前启动类所在的包里的对象。不在自动扫描路径下,需要修改自定义扫描包路径。
方式一:扫描包
单个:@ComponentScan(basePackages = “xxx”)
多个:@ComponentScan(basePackages = {“xxx”,“aaa”,“…”})
注意:可以省略“basePackages =”
demo:
@Configuration
@ComponentScan(basePackages = {"com.test.testcompentscan"})
public class MainConfig {
}
方式二:扫描类
同样返回是String的数组,所以可以是有多个类名! 也可是一个类名!
单个:@ComponentScan(basePackageClasses = “”)
多个:@ComponentScan(basePackageClasses = {“xxx”,“aaa”,“…”})
注意:不可以省略“basePackageClasses =”
apollo官方代码demo:
@EnableAspectJAutoProxy
@Configuration
@EnableAutoConfiguration
@EnableTransactionManagement
@ComponentScan(basePackageClasses = {ApolloCommonConfig.class,
PortalApplication.class, PortalOpenApiConfig.class})
public class PortalApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(PortalApplication.class, args);
}
}
basePackageClasses属性会去扫描类所在包下的所有组件,而不是指定某个组件!