我有春季启动应用程序( 1.1.5.RELEASE )并通过配置主题spring.profiles.active=MyProfile
启用我的个人资料
配置文件被正确激活,我可以通过正在创建的配置文件中的bean看到该配置文件。
然后我使用@Controller
如下:
@Controller
@RequestMapping("/someUrl")
@Profile("MyProfile")
public class MyController {
...
}
未实例化此控制器,并且未映射控制器中使用的URL。在同一个包中,我有另一个不受@Profile
限制的控制器,这些控制器会按预期进行实例化和映射。
那么在控制器上使用@Profile
注释是否与弹簧启动不兼容?我应该使用其他方法吗?
编辑:这似乎是一个错误,好像我将-Dspring.profiles.active=MyProfile
作为JVM属性包含在控制器实例化:&#39;( < / p>
Edit2:所以有趣的是:
如果您在spring.profiles.active
中定义application.properties
,默认情况下从类路径中加载它{
将文件重命名为test.properties
并通过@PropertySource("classpath:test.properties")
包含该文件时,它将停止工作。会引发反对它的错误。
编辑3:按照承诺:https://github.com/spring-projects/spring-boot/issues/1417
谢谢!
答案 0 :(得分:4)
我已将此追踪到我认为是春天的错误。有关详细信息,请参阅SPR-12111。
答案 1 :(得分:1)
你可以在Spring Boot中使用@Profile注释一个控制器,就像你上面做的那样。如果MyProfile处于活动状态,MyController将被实例化。你确定&#34; MyProfile&#34;是活跃的个人资料?你在设置spring.profiles属性吗?
http://docs.spring.io/spring/docs/3.2.x/javadoc-api/org/springframework/context/annotation/Profile.html @Profile注释可以通过以下任何方式使用:
作为直接或间接使用@Component注释的任何类的类型级注释,包括@Configuration类 作为元注释,用于编写自定义构造型注释