在spring或java中是否有注释可以转换给定的字符串?
例如,Spring具有注释@Value(" some string")。 如果我想为该字符串分配一个转换后的值,而不是向参数/实例变量分配"某些字符串"怎么办? 假设字符串为" foo"。 每次看到此注释时,我都希望返回的字符串是" bar:foo"而不是foo。 我想要的是能够在参数或实例变量上放置注释,并使该转换自动发生。 也许甚至注释也需要一个类和字符串,以使该类充当给定字符串的转换器。
在Spring或Java中是否有注释可以做到这一点?如果没有,那么实现这种事情的最佳方法是什么?
谢谢
劳伦
我没有这个问题...也许您可以提供一些概述您的要求的伪代码?
您可以在@Value批注内使用Spring Expression Language。
这是将其用于静态方法的方式:
@Value("#{T(fully.qualified.package.name.to.class).getFooString()}")
public void setBar(String value){
this.bar = value;
}
如果您之前有一个bean定义,则可以简单地使用
@Value("#{bean.method()}")或@Value("#{bean.property}")
Spring的@Value注释可用于使用Spring表达式语言为属性分配常量以外的值。 例如,从属性文件读取的值。 如果它只是分配一个常量,则最好使用private String foo ="bar";。
因此,您可以使用它从某些配置文件或系统属性中获取所需的值。
如果您要对字段应用某种转换算法,那么我真的看不到使用注释的意义。 只需调用Java方法:
@Value("foo") // or some EL expression which evaluates to"foo"
public void setBar(String value) {
this.bar = someStringTransformer.transform(value);
}
这看起来很容易阅读,测试和维护。