在运行时为

时间:2016-03-08 00:47:02

标签: java spring tomcat

我在打包为war文件的Tomcat实例中运行Spring Boot Application。我希望能够以休息服务的形式向我的实例添加“包”。为此,我需要能够在运行时在@SpringBootApplication注释中配置scanBasePackages。即当tomcat启动时。现在我有......

@SpringBootApplication(scanBasePackages="path1, path2")
public class RestApplication extends SpringBootServletInitializer {
   //code
}

...但我希望path2可配置,并且如果需要,还可以添加path3等。我怎样才能做到这一点?我知道我无法在注释中配置字符串,所以我的问题是关于我对此注释的其他选择,以便设置它。

干杯。

2 个答案:

答案 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"})

希望这会有所帮助:)