更改字符串值的注释

时间:2011-08-27 14:05:22

标签: java spring annotations

spring或java中是否存在转换给定字符串的注释?

例如,Spring有注释@Value(“some string”)。如果不是将“some string”分配给参数/实例变量,我想分配该字符串的变换值。假设字符串是“foo”。每当我看到这个注释时,我希望返回的字符串是“bar:foo”而不是foo。我想要的是能够在参数或实例变量上放置注释,并自动进行转换。也许甚至是一个注释,它接受一个类和字符串,使得该类充当给定字符串的变换器。

是否有一个注释在spring或java中执行此操作,如果不是,那么实现这样的事情的最佳方法是什么?

由于 劳伦

2 个答案:

答案 0 :(得分:1)

您可以在@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}")

答案 1 :(得分:0)

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);
}

这似乎易于阅读,测试和维护。