首页 > 解决方案 > 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"]

但它不工作

标签: javaspring-bootjava-8packagespring-vault

解决方案


您在正确的轨道上,但有几个小错误,请通过常见的分隔符ymlproperties文件指定包

app.packages = com.package1,com.package2,com.package3

@ComponentScan然后在注解中使用 Spring Expression Language

@ComponentScan(basePackages = {"${app.packages}"})

推荐阅读