Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 你能在Spring中直接给bean赋值吗?_Java_Spring_Javabeans - Fatal编程技术网

Java 你能在Spring中直接给bean赋值吗?

Java 你能在Spring中直接给bean赋值吗?,java,spring,javabeans,Java,Spring,Javabeans,我试图在Spring中用一个等价的bean定义在Java代码中重现一个赋值。不过,据我所知,Spring只允许将值分配给对象中的字段(前提是该类定义了适当的setter方法)。有没有一种方法可以简单地使用Springbeans捕获对对象的引用 下面是一个示例,说明了我希望它如何工作: <!-- Non-working example. --> <bean id="string" class="java.lang.String"> <value>"I a

我试图在Spring中用一个等价的bean定义在Java代码中重现一个赋值。不过,据我所知,Spring只允许将值分配给对象中的字段(前提是该类定义了适当的setter方法)。有没有一种方法可以简单地使用Springbeans捕获对对象的引用

下面是一个示例,说明了我希望它如何工作:

<!-- Non-working example. -->
<bean id="string" class="java.lang.String">
    <value>"I am a string."</value>
</bean>

“我是一根绳子。”

我意识到在这种特殊情况下,我可以只使用
,但我正在寻找更通用的解决方案,它也适用于不提供参数化构造函数的类。

字符串类是不可变的。java.lang.String类中没有可用的属性
setter方法
。如果要注入属性值,可以使用以下方法:

<bean id="emp" class="com.org.emp">
    <property name="name" value="Alex" />
</bean>


在上面的obj emp中,其name属性将设置为Alex。

这里要使用的是
工厂方法
,可能与
工厂bean
结合使用。(非静态函数必须由适当类型的bean实例化。)在我的示例问题中,我想捕获返回字符串的函数的输出。假设函数如下所示:

class StringReturner {
    public String gimmeUhString(String inStr) {
        return "Your string is: " + instr;
    }
}
首先,我需要创建一个类型为
StringReturner
的bean

<bean name="stringReturner" class="how.do.i.java.StringReturner" />
就我而言,这相当于说:

StringReturner stringReturner = new StringReturner();
String string = stringReturner.gimmeUhString("I am a string.");

String不是Bean,Bean是一个对象,他的类有一个带空参数的构造函数,属性可由getter方法访问,并可由Setters方法修改

StringReturner stringReturner = new StringReturner();
String string = stringReturner.gimmeUhString("I am a string.");