[英]How to get Spring profile name from annotation?
使用Spring 3.1和配置文件,创建定义特定配置文件的自定义界面变得有趣。 美的一部分是能够完全忘记配置文件的String名称并只使用注释。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Profile("Dev")
public @interface Dev {
}
然后使用@Dev
简单地注释bean。 这非常有效。
但是,如何检查@Dev
配置文件是否处于活动状态? Environment.acceptsProfiles()
需要String参数。 这样做是否有“整洁”的方式,或者是我做出以下事情的唯一选择:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Profile(Dev.NAME)
public @interface Dev {
public static String NAME = "Dev";
}
public class MyClass{
@Autowired
private Environment env;
private void myMethod(){
if( env.acceptsProfiles( Dev.NAME ) )
// do something here
;
}
虽然功能齐全,但我并不特别喜欢这个概念。 还有另一种方法我可以做这个整洁的?
我想做类似的事情(在我的情况下,代表一个配置文件注释下的同义词列表)但我遇到了你遇到的问题,以及另一个限制:你将无法应用多个注释到一个豆子,让它们都被spring
捡起来(至少在spring 3
)。
不幸的是,由于你无法通过枚举,我解决的解决方案就是使用普通的字符串常量而不使用枚举。 然后我可以做像@Profile(CONSTANT_ONE, CONSTANT_TWO)
这样的事情。 我仍然无法进行拼写错误,但也获得了将多个配置文件应用于同一个bean的能力。
不完美,但也不是太糟糕。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.