java - Spring引导从属性文件加载包列表
问题描述
我使用 Spring Boot 进行项目设置,在启动时加载各个组件。每个单独的包都包含自己的数据源、进程等。我可以简单地使用它,它工作正常
@SpringBootApplication(scanBasePackages = {
"com.package1",
"com.package2",
"com.package3"
})
public class Application extends SpringBootServletInitializer{
public static void main(String[] args){
SpringApplication.run(Application.class,args)
}
}
但目前,个别项目的数量越来越多。是否可以将要扫描的组件/包列表放在外部属性文件或弹簧库中?我不确定如何检索它,是否可以在启动之前检索属性?
编辑:
目前我试过这个:
@Import(AppConfig.class)
public class Application extends SpringBootServletInitializer{
public static void main(String[] args){
SpringApplication.run(Application.class,args)
}
}
@Configuration
@ComponentScan(basePackages = {$app.packages})
@EnableAutoConfiguration
public class AppConfig {
}
//in my properties file
app.packages = ["com.package1","com.package2","com.package3"]
但它不工作
解决方案
您在正确的轨道上,但有几个小错误,请通过常见的分隔符yml
或properties
文件指定包
app.packages = com.package1,com.package2,com.package3
@ComponentScan
然后在注解中使用 Spring Expression Language
@ComponentScan(basePackages = {"${app.packages}"})
推荐阅读
- python - Keras 不使用 GPU - 如何排除故障?
- python - 释放鼠标后在python中调用一个函数并在从中选择一个选项后关闭tkinter窗口
- postgresql - 如何使postgresql只在日志中记录DDL语句?
- docker - Docker:从容器内部连接到 localhost:port 被拒绝
- javascript - Jest 是绿色的,即使 Expected 不等于 Received
- intellij-idea - Intellij 不会以错误开始:“错误:无法找到或加载主类 com.intellij.idea.Main”
- bootstrap-4 - 自定义引导网格断点
- angular - StaticInjectorError(Platform: core)[CompilerFactory] | NullInjectorError:没有 CompilerFactory 的提供者
- ios - 使用 alamofire 的响应序列化失败
- java - 访问来自不同 java 类的特定对象的相同实例