如何从一个不受spring管理的pojo中获取Spring Context中的Property?

时间:2012-11-29 17:10:33

标签: spring properties pojo

我有一个在spring context xml文件中配置的属性文件。我从文件加载值很好。 我试图从常规pojo中加载属性文件中的属性,而不是弹簧管理。由于Spring已经加载了该属性,我想知道是否有办法获取值而不是我必须手动加载属性文件?

2 个答案:

答案 0 :(得分:6)

如果您的pojo不是由Spring管理的,那么您可以以静态方式访问Spring上下文。

将bean添加到应用程序xml:

<bean id="StaticSpringApplicationContext" class="com.package.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访问任何Spring bean:

StaticSpringApplicationContext.getBean("yourBean")

答案 1 :(得分:0)

对于更现代的方法,该方法使用注释并实现泛型,您可以在Wickramarachi响应的基础上使用此版本:

$output = shell_exec('php artisan');
echo $output;

用法如下:

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class StaticSpringApplicationContext implements ApplicationContextAware {
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        StaticSpringApplicationContext.applicationContext = applicationContext;
    }

    public static <T> T getBean(Class<T> requiredType) {
        return applicationContext.getBean(requiredType);
    }

    public static <T> T getBean(String beanName, Class<T> requiredType) {
        return applicationContext.getBean(beanName, requiredType);
    }

}