我在打包为war文件的Tomcat实例中运行Spring Boot Application。我希望能够以休息服务的形式向我的实例添加“包”。为此,我需要能够在运行时在@SpringBootApplication注释中配置scanBasePackages。即当tomcat启动时。现在我有......
@SpringBootApplication(scanBasePackages="path1, path2")
public class RestApplication extends SpringBootServletInitializer {
//code
}
...但我希望path2可配置,并且如果需要,还可以添加path3等。我怎样才能做到这一点?我知道我无法在注释中配置字符串,所以我的问题是关于我对此注释的其他选择,以便设置它。
干杯。
答案 0 :(得分:3)
你可以尝试在你的项目中使用这样的东西
@Configuration
@Profile("custom-profile")
@ImportResource( {"file:path/additional-context.xml" } )
public class ConfigClass { }
然后配置在此文件中扫描的其他包。
<context:component-scan base-package="x.y.z.service, x.y.z.controller, x.y.z.dao" />
请注意,您的资源additional-context.xml声明为external,您可以更改它而无需重建war。
在将配置文件“custom-profile”声明为活动状态后,将处理@ImportResource。使用“默认配置”启动应用程序是一种安全的方法,没有任何“additional-context.xml”磁盘文件。答案 1 :(得分:2)
你试过这个:
@SpringBootApplication(scanBasePackages={"path1", "path2"})
希望这会有所帮助:)