Java Spring将值从POJO加载到应用程序上下文中
是否可以通过某种方式将值从POJO加载到Spring appcontext.xml中 例如,我有一个POJO,类似Java Spring将值从POJO加载到应用程序上下文中,java,spring,autowired,spring-annotations,Java,Spring,Autowired,Spring Annotations,是否可以通过某种方式将值从POJO加载到Spring appcontext.xml中 例如,我有一个POJO,类似 public class Settings { private String appSetting; getMethod; setMethod; 最终目标是,我希望somethingElse自动连接设置中的值。因为我认为您不能在Spring中调用方法,所以有什么方法可以做到这一点吗 示例appContext <bean id="settings"
public class Settings {
private String appSetting;
getMethod;
setMethod;
最终目标是,我希望
somethingElse
自动连接设置中的值。因为我认为您不能在Spring中调用方法,所以有什么方法可以做到这一点吗
示例appContext
<bean id="settings" class="com.myCom.settings" />
<bean id="somethingElse" class="com.myCom.somethingElse" />
<constructor-arg name="something" value="VALUE FROM SETTINGS.GET" />
</bean>
从弹簧手册中进行检查
更新
你也可以使用。您甚至可以将
applicationContext.xml
与@Autowired
混合使用。例如,您可以按名称或类型进行连接。您可以在应用程序上下文中注册设置组件,然后创建第三个类,即用于生成SomethingElse类实例的工厂。然后,您可以将设置组件连接到工厂中,以便在构建SomethingElse类的实例时获取所需的值。像这样:
<bean id="mySettings" class="Settings">
<property name="importantValue" value="whatever" />
</bean>
<bean id="mySomethingElseFactory" class="SomethingElseFactory">
<property name="settings" ref="mySettings" />
</bean>
最后,您可以在应用程序上下文中将SomethingElse组件初始化为从工厂方法派生的bean,如下所示:
<bean id="mySomethingElse" factory-bean="mySomethingElseFactory" factory-method="getASomethingElse" />
它涉及到创建第三个factory类,但允许您执行所需操作。我没有尝试过这一点,但PropertyPathFactoryBean应该可以帮助您。您可以用@Component注释pojo,并使用名称“settings”访问它,或者在完成后在配置文件中定义一个bean 在此之后,通过PropertyPathFactoryBean将属性推入“somethingElse”。提供了一个解释。希望这有帮助。
<bean id="settings" class="com.myCom.settings" />
<bean id="somethingElse" class="com.myCom.somethingElse" />
<constructor-arg name="something" value="#{settings.something}" />
</bean>
请参见我为应用程序上下文所做的编辑。如何使用@Component获取值?我读了手册,但似乎不知道如何实现我的目标。我几乎想感觉它是新的@Value注释,但我不确定…添加了一个指向SpEL的链接。:)根据您的用例,@Value
也可以工作。无论如何,@Value
注释可能需要SpEL。
<bean id="mySomethingElse" factory-bean="mySomethingElseFactory" factory-method="getASomethingElse" />
<bean id="settings" class="com.myCom.settings" />
<bean id="somethingElse" class="com.myCom.somethingElse" />
<constructor-arg name="something" value="#{settings.something}" />
</bean>