Spring boot从属性文件加载包列表

pok*_*ken 3 java package java-8 spring-boot spring-vault

我使用 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)        
    }
}
Run Code Online (Sandbox Code Playgroud)

但目前,单个项目的数量正在变得越来越大。是否可以将要扫描的组件/包列表放入外部属性文件或 spring Vault 中?我不确定如何检索它,是否可以在启动前检索属性?


编辑:

目前我尝试过这个:

@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"]
Run Code Online (Sandbox Code Playgroud)

但它不起作用

Dea*_*ool 5

yml您走在正确的道路上,但有几个小错误,请通过常用分隔符或properties文件指定包

app.packages = com.package1,com.package2,com.package3
Run Code Online (Sandbox Code Playgroud)

@ComponentScan然后在注解中使用Spring表达式语言

@ComponentScan(basePackages = {"${app.packages}"})
Run Code Online (Sandbox Code Playgroud)