从Spring bean中检索属性/值为字符串

时间:2013-07-25 21:46:47

标签: java spring javabeans code-injection context.xml

我在context.xml中有以下内容:

<bean id="myBean" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>file:${specific.dir}/file1.properties</value>
            <value>file:${specific.dir}/file2.properties</value>
            <value>file:${specific.dir}/file3.properties</value>
            <value>file:${specific.dir}/file4.properties</value>
        </list>
    </property>
</bean>

我正在通过静态spring应用程序上下文在POJO中检索这个bean,并且通过调试器看起来确实有效。

我是否还要检索列表中的四个值以及此POJO中的属性名称?

我的staticSpringApplicationContext如下:

public class StaticSpringApplicationContext implements ApplicationContextAware  {
private static ApplicationContext CONTEXT;

  public void setApplicationContext(ApplicationContext context) throws BeansException {
    CONTEXT = context;
  }

  public static Object getBean(String beanName) {
    return CONTEXT.getBean(beanName);
  }

}

在我的POJO中跟随这个:

StaticSpringApplicationContext.getBean("myBean");

非常感谢任何帮助或指导。我在春天遇到的麻烦比我承认的要多。

2 个答案:

答案 0 :(得分:1)

你可以使用spring @Value注释,像这样:

@Component
public MyClass {

  @Value("${some.prop.name1}")
  private String myProp1;

}

file1.properties:

some.prop.name1=value1

我希望它会有所帮助。祝你好运。

答案 1 :(得分:0)

是否可以这样做取决于bean的定义。它必须有setLocations()方法(或正确注释),S​​pring将通过该方法注入值。

如果存在,则使用bean上的getter方法检索值。如果不是,您将需要修改bean。