Java Spring中的上下文处理

Java Spring中的上下文处理,java,spring,spring-mvc,design-patterns,properties-file,Java,Spring,Spring Mvc,Design Patterns,Properties File,我正在做一个小项目,我正在寻找一种在spring中处理上下文的好方法。我发现自己使用setter注入创建了一个上下文持有者类来保存我的属性。我遇到的问题是,我正在抓取一个上下文对象并将其传递给其他人。我正在寻找一个设计模式或东西,可以帮助我做到这一点在一个干净的方式。作为一个简单的例子,假设我目前正在做下面这样的事情,通过setter注入来注入字段,我正在寻找一种更好的方法来注入属性,假设我有大量的属性,太大了,无法干净地使用@Value之类的东西: public class MyContext

我正在做一个小项目,我正在寻找一种在spring中处理上下文的好方法。我发现自己使用setter注入创建了一个上下文持有者类来保存我的属性。我遇到的问题是,我正在抓取一个上下文对象并将其传递给其他人。我正在寻找一个设计模式或东西,可以帮助我做到这一点在一个干净的方式。作为一个简单的例子,假设我目前正在做下面这样的事情,通过setter注入来注入字段,我正在寻找一种更好的方法来注入属性,假设我有大量的属性,太大了,无法干净地使用@Value之类的东西:

public class MyContext{

    private String configItem1;
    private String configItem2;
    private String configItem3;


    public void setConfigItem1(String configItem1){
        this.configItem1 = configItem1;
    }

    public void setConfigItem2(String configItem2){
        this.configItem2 = configItem1;
    }

    public void setConfigItem3(String configItem3){
        this.configItem3 = configItem1;
    }

}
示例spring上下文:

<bean id="appProperties"
       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:my-app.properties</value>
            </list>
        </property>
    </bean>


<bean id="myContext" class="these.are.not.the.droids.you.are.looking.for.context.MyContext" >
     <property name="configItem1" value="${some.item.1}" />
     <property name="configItem2" value ="${some.item.2}"/>
     <property name="configItem3" value="${some.item.3}" />
</bean>

类路径:my-app.properties

您是否考虑过简单地使用映射来存储值?Java天生就是一种冗长的语言。所以我想你别无选择。

您是否考虑过简单地使用地图来存储值?Java天生就是一种冗长的语言。所以我想你别无选择。

如果配置值特定于请求,则可以使用ThreadLocal(),它可以在“调用上下文”中跨层保存值。您可以在控制器中填充此ThreadLocal变量,并在同一调用链中的任何层使用它

如果您的设置适用于多个请求,则可以使用ApplicationContext存储这些值。您可以在春季像这样访问ApplicationContext-

@Autowired
private ApplicationContext appContext;

如果您的配置值特定于请求,则可以使用ThreadLocal(),它可以在“调用上下文”中跨层保存值。您可以在控制器中填充此ThreadLocal变量,并在同一调用链中的任何层使用它

如果您的设置适用于多个请求,则可以使用ApplicationContext存储这些值。您可以在春季像这样访问ApplicationContext-

@Autowired
private ApplicationContext appContext;