我有spring boot应用程序( 1.1.5.RELEASE )并通过配置属性启用了我的配置文件spring.profiles.active=MyProfile
spring.profiles.active=MyProfile
概要文件已正确激活,我可以通过创建的概要文件中的bean看到该概要文件。
然后我有一个@Controller用法如下:
@Controller
@Controller @RequestMapping("/someUrl") @Profile("MyProfile") public class MyController { ... }
该控制器未实例化,并且未映射该控制器中使用的URL。在同一个程序包中,我有另一个不受限制的控制器,@Profile这些控制器已实例化并按预期进行映射。
@Profile
那么@Profile在控制器上使用注释与Spring Boot不兼容吗?我应该使用其他方法吗?
编辑: 毕竟这似乎是一个错误,好像我包括-Dspring.profiles.active=MyProfile实例化控制器作为JVM属性 :’(
-Dspring.profiles.active=MyProfile
Edit2: 有趣的部分到了:
如果定义spring.profiles.active在application.properties其默认情况下,从classpath中加载thne它的工作原理
spring.profiles.active
application.properties
当您将文件重命名为test.properties并通过@PropertySource("classpath:test.properties")它包含它时,它将停止工作。将提出反对它的错误。
test.properties
@PropertySource("classpath:test.properties")
编辑3: 如承诺的那样:https : //github.com/spring-projects/spring- boot/issues/1417
谢谢!
我已经将其归结为我认为是Spring中的错误。有关更多详细信息,请参见SPR-12111。