我正在将grails应用程序转换为spring。如何从spring 'WEB-INF / applicationContext.xml'获取常规或java类中的spring bean。
这是我用于grails应用程序的代码
queueConnectionFactory = (QueueConnectionFactory)Holders.applicationContext.getBean("jmsConnectionFactory");
我试过
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
queueConnectionFactory usa = (QueueConnectionFactory) ctx.getBean("jmsConnectionFactory");
但它没有用,我收到了错误
java.io.FileNotFoundException:无法打开类路径资源[applicationContext.xml],因为它不存在 在org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157) 在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328) 在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
请帮我解决此问题。谢谢
答案 0 :(得分:2)
尝试将应用程序上下文文件移动到类路径上,例如WEB-INF/classes
答案 1 :(得分:1)
我不相信您的applicationContext.xml
文件位于类路径上。尝试将文件放在source folder
的根目录中,以便将其放在类路径上。
答案 2 :(得分:0)
如果需要获取单个bean,则不需要加载整个应用程序上下文。实际上,您可能不想这样做,因为这会在您不需要的上下文中加载其他内容。考虑使用Spring“感知”界面,例如BeanFactoryAware或ApplicationContextAware。
您想要引用bean工厂或上下文的类只实现这些,例如
public class MyClass implements BeanFactoryAware {
public void setBeanFactory(BeanFactory factory) {
// get a reference to the bean factory
}
// now in here you can reference the bean factory and lookup the beans
}