在 Spring 中处理上下文
Handling Context In Spring
我正在做一个小项目,我正在寻找一种在 spring 中处理上下文的好方法。我发现自己创建了一个上下文持有者 class 来使用 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>
您是否考虑过简单地使用 Map 来存储值? Java 本质上是一种冗长的语言。所以我想你别无选择。
http://www.java2s.com/Tutorial/Java/0417__Spring/FillMap.htm
如果您的配置值特定于请求,那么您可以使用 ThreadLocal (API for ThreadLocal),它可以在 [=20] 中跨层保存值=].您可以在控制器中填充此 ThreadLocal 变量,并在同一调用链中的任何层使用它。
如果您的设置适用于所有请求,那么您可以使用 ApplicationContext 来存储这些值。您可以在 Spring -
中像这样访问 ApplicationContext
@Autowired
private ApplicationContext appContext;
我正在做一个小项目,我正在寻找一种在 spring 中处理上下文的好方法。我发现自己创建了一个上下文持有者 class 来使用 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>
您是否考虑过简单地使用 Map 来存储值? Java 本质上是一种冗长的语言。所以我想你别无选择。 http://www.java2s.com/Tutorial/Java/0417__Spring/FillMap.htm
如果您的配置值特定于请求,那么您可以使用 ThreadLocal (API for ThreadLocal),它可以在 [=20] 中跨层保存值=].您可以在控制器中填充此 ThreadLocal 变量,并在同一调用链中的任何层使用它。
如果您的设置适用于所有请求,那么您可以使用 ApplicationContext 来存储这些值。您可以在 Spring -
中像这样访问 ApplicationContext@Autowired
private ApplicationContext appContext;