你能直接给Spring中的一个bean赋值吗?
Can you assign a value directly to a bean in Spring?
我正在尝试用 Spring 中的等效 bean 定义重现 Java 代码中的赋值。不过,据我所知,Spring 只允许您为对象内的字段赋值(前提是 class 定义了适当的 setter 方法)。有没有一种方法可以使用 Spring beans 简单地捕获对对象的引用?
这是我希望它如何工作的示例:
<!-- Non-working example. -->
<bean id="string" class="java.lang.String">
<value>"I am a string."</value>
</bean>
我意识到在这种特殊情况下我可以只使用 <constructor-arg>
,但我正在寻找更通用的解决方案,一个也适用于 class 不提供参数化的解决方案构造函数。
字符串 class 是不可变的。在 java.lang.String class 中没有 属性 setter method
。如果你想注入 属性 值,你可以在下面使用:
<bean id="emp" class="com.org.emp">
<property name="name" value="Alex" />
</bean>
在上面的 obj emp 中,其名称 属性 将被设置为 Alex。
这里要使用的是 factory-method
,可能与 factory-bean
结合使用。 (非静态函数必须由适当类型的 bean 实例化。)在我的示例问题中,我想捕获 returns 字符串的函数的输出。假设函数如下所示:
class StringReturner {
public String gimmeUhString(String inStr) {
return "Your string is: " + instr;
}
}
首先我需要创建一个 StringReturner
.
类型的 bean
<bean name="stringReturner" class="how.do.i.java.StringReturner" />
然后我通过将所需的函数调用为 factory-method
来实例化我的 String bean。您甚至可以使用 <constructor-arg>
元素向工厂方法提供参数:
<bean id="string" factory-bean="stringReturner" factory-method="gimmeUhString">
<constructor-arg>
<value>I am a string.</value>
</constructor-arg>
</bean>
这(对我而言)等同于说:
StringReturner stringReturner = new StringReturner();
String string = stringReturner.gimmeUhString("I am a string.");
String 不是 Bean,Bean 是一个 Objet,他的 Class 具有带空参数的构造函数,属性可通过 Getters 方法访问并且可通过 Setters 方法修改
我正在尝试用 Spring 中的等效 bean 定义重现 Java 代码中的赋值。不过,据我所知,Spring 只允许您为对象内的字段赋值(前提是 class 定义了适当的 setter 方法)。有没有一种方法可以使用 Spring beans 简单地捕获对对象的引用?
这是我希望它如何工作的示例:
<!-- Non-working example. -->
<bean id="string" class="java.lang.String">
<value>"I am a string."</value>
</bean>
我意识到在这种特殊情况下我可以只使用 <constructor-arg>
,但我正在寻找更通用的解决方案,一个也适用于 class 不提供参数化的解决方案构造函数。
字符串 class 是不可变的。在 java.lang.String class 中没有 属性 setter method
。如果你想注入 属性 值,你可以在下面使用:
<bean id="emp" class="com.org.emp">
<property name="name" value="Alex" />
</bean>
在上面的 obj emp 中,其名称 属性 将被设置为 Alex。
这里要使用的是 factory-method
,可能与 factory-bean
结合使用。 (非静态函数必须由适当类型的 bean 实例化。)在我的示例问题中,我想捕获 returns 字符串的函数的输出。假设函数如下所示:
class StringReturner {
public String gimmeUhString(String inStr) {
return "Your string is: " + instr;
}
}
首先我需要创建一个 StringReturner
.
<bean name="stringReturner" class="how.do.i.java.StringReturner" />
然后我通过将所需的函数调用为 factory-method
来实例化我的 String bean。您甚至可以使用 <constructor-arg>
元素向工厂方法提供参数:
<bean id="string" factory-bean="stringReturner" factory-method="gimmeUhString">
<constructor-arg>
<value>I am a string.</value>
</constructor-arg>
</bean>
这(对我而言)等同于说:
StringReturner stringReturner = new StringReturner();
String string = stringReturner.gimmeUhString("I am a string.");
String 不是 Bean,Bean 是一个 Objet,他的 Class 具有带空参数的构造函数,属性可通过 Getters 方法访问并且可通过 Setters 方法修改