相关疑难解决方法(0)

如何将Spring Boot application.properties外部化到tomcat/lib文件夹

我需要一个免配置,可部署的war,myapp1.war,它可以从tomcat/lib文件夹中检索配置文件.由于我有其他Web应用程序共存于同一个Tomcat:myapp2.war,myapp3.war,我需要这个布局:

tomcat/lib/myapp1/application.properties
tomcat/lib/myapp2/application.properties
tomcat/lib/myapp3/application.properties
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以在战争中构建war文件而不需要任何属性文件,并在任何服务器上部署.

我已经阅读了Spring文档,但它解释了如何在作为jar运行时设置位置:

java -jar myapp.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
Run Code Online (Sandbox Code Playgroud)

对于多个共存战争文件的情况,我无法弄清楚如何做到这一点.

我想知道这是否可行,还是应该放弃Spring Boot并回到传统的Spring MVC应用程序.

java tomcat maven-3 spring-boot

24
推荐指数
1
解决办法
3万
查看次数

在spring boot中使用@Profile

我有弹簧启动应用程序(1.1.5.RELEASE)并通过配置属性启用我的配置文件spring.profiles.active=MyProfile

配置文件被正确激活,我可以从正在创建的配置文件中看到bean.

然后我@Controller用了如下:

@Controller
@RequestMapping("/someUrl")
@Profile("MyProfile")
public class MyController {
...
}
Run Code Online (Sandbox Code Playgroud)

未实例化此控制器,并且未映射控制器中使用的URL.在同一个包中,我有另一个不受限制的控制器,@Profile这些控制器按预期进行实例化和映射.

那么@Profile在控制器上使用与弹簧启动不兼容的东西吗?我应该使用其他方法吗?

编辑:这似乎是一个错误,好像我-Dspring.profiles.active=MyProfile作为JVM属性包含控制器实例化:'(

编辑2:所以这里有趣的部分:

  • 如果定义spring.profiles.activeapplication.properties其默认情况下,从classpath中加载thne它的工作原理

  • 当您重命名文件test.properties并通过@PropertySource("classpath:test.properties")它包含它停止工作.会针对它提出一个错误.

编辑3:按照承诺:https://github.com/spring-projects/spring-boot/issues/1417

谢谢!

java spring spring-mvc spring-boot

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×2

spring-boot ×2

maven-3 ×1

spring ×1

spring-mvc ×1

tomcat ×1