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