我有一个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属性包含,控制器就会被实例化:'(
编辑2:所以这里有趣的部分来了:
如果你在默认从classpath加载的
application.properties
中定义spring.profiles.active
,它可以工作当你将文件重命名为
test.properties
并通过@PropertySource("classpath:test.properties")
包含它时,它停止工作。会对此提出一个bug。
编辑3:如承诺:https://github.com/spring-projects/spring-boot/issues/1417
谢谢!