如何从静态方法填充 spring bean 的 属性

How to populate property of spring bean from static method

我想知道如何从静态方法填充 spring bean 属性。这是我的例子。我有 ClassA 和 Utils 静态方法:

    public class ClassA{
        private String name;
        private int age;
        
        //getters setters
    }
    
    public class Utils{
        static String getRandomName(){
            return "someRandomName"; //here is some logic returning random string
        }
    }

我想使用 Utils 静态方法 getRandomName 从 ClassA 创建 bean。像这样:

<bean class="com.example.ClassA"
    p:name=//Utils.getRandomName()
    p:age="33"
/>

,但我不知道如何从应用程序调用静态方法-context.xml

有一个特殊的值可以产生随机值。 random.value 将生成随机的字母数字字符串。所以你的 bean 可能看起来像:

<bean class="com.example.ClassA"
    p:name="${random.value}"
    p:age="33"
/>

如果您的 getRandomName() 中有额外的逻辑,那么您可以使用 Spring 表达式语言 (SpEL) 来执行表达式。例如:

<bean class="com.example.ClassA"
    p:name="#{ T(com.example.Utils).getRandomName() }"
    p:age="33"
/>