一尘不染

在Spring Boot中使用@Profile

spring-boot

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

概要文件已正确激活,我可以通过创建的概要文件中的bean看到该概要文件。

然后我有一个@Controller用法如下:

@Controller
@RequestMapping("/someUrl")
@Profile("MyProfile")
public class MyController {
...
}

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

那么@Profile在控制器上使用注释与Spring Boot不兼容吗?我应该使用其他方法吗?

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

Edit2: 有趣的部分到了:

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

  • 当您将文件重命名为test.properties并通过@PropertySource("classpath:test.properties")它包含它时,它将停止工作。将提出反对它的错误。

编辑3: 如承诺的那样:https : //github.com/spring-projects/spring-
boot/issues/1417

谢谢!


阅读 360

收藏
2020-05-30

共1个答案

一尘不染

我已经将其归结为我认为是Spring中的错误。有关更多详细信息,请参见SPR-12111

2020-05-30