Spring を学んでいますが、実行時に Bean プロパティに値を割り当てる方法はありますか? 私がインターネットや書籍で試したすべての例では、通常、xml ファイルにハードコードされた値を実装しています。
たとえば、この Web サイトにある短いチュートリアルhttp://www.dzone.com/tutorials/java/spring/spring-bean-setter-injection-1.html
User クラスにはゲッター メソッドとセッター メソッドがありますが、その値はすべてbeans.xml でハードコーディングされています。main() の setter メソッドを使用して User のメンバー変数に値を設定しようとしましたが、多くのエラーが発生しました。
ですから、これが可能かどうか疑問に思っています。可能であれば、このチュートリアルのある短いサンプルまたはウェブサイトを見せていただければ幸いです。前もって感謝します。
Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unexpected failure during bean definition parsing
Offending resource: class path resource [SimpleValues.xml]
Bean 'insertValues'; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: <property> element for property 'name' must specify a ref or value
Offending resource: class path resource [SimpleValues.xml]
Bean 'insertValues'
-> Property 'name'
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:324)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:579)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:477)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:446)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.processBeanDefinition(DefaultBeanDefinitionDocumentReader.java:311)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:202)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:181)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)
//More errors
これは私のxmlファイルです
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="insertValues" class="com.SimpleValues.SimpleValues">
<property name="name"/>
<property name="age"/>
<property name="height"/>
</bean>
</beans>
主な方法
public static void main(String[] args) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("SimpleValues.xml");
ctx.refresh();
SimpleValues inject = (SimpleValues) ctx.getBean("insertValues");
inject.setName("Andres");
inject.setAge(20);
inject.setHeight(7);
System.out.println("Name: "+ inject.getName()+ " Age: "+inject.getAge()+ " Height: "+inject.getHeight());
}