Java Spring将值从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"

是否可以通过某种方式将值从POJO加载到Spring appcontext.xml中

例如,我有一个POJO,类似

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>