有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

更改字符串值的java注释

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

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

spring或java中是否有这样的注释?如果没有,实现这样一个东西的最佳方式是什么

谢谢 劳伦


共 (2) 个答案

  1. # 1 楼答案

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

    这看起来很容易阅读、测试和维护

  2. # 2 楼答案

    您可以在@Value注释中使用Spring表达式语言

    以下是如何将其用于静态方法:

    @Value("#{T(fully.qualified.package.name.to.class).getFooString()}")
    public void setBar(String value){
       this.bar = value;
    }
    

    如果您之前有一个bean定义,那么您可以简单地使用 @Value("#{bean.method()}")@Value("#{bean.property}")