我想知道是否有一种方法可以加载弹簧应用程序上下文而无需在 web.xml 中定义它。
我看到你可以使用:
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
但是如果你想使用bean,你必须 getBean()才能访问它。我想可能有一种方法可以像web xml中的定义那样以编程方式加载上下文,而不必调用getBean。
有什么想法吗?
答案 0 :(得分:1)
您可以使用:
ctx.getAutowireCapableBeanFactory().autowireBeanProperties(this,
AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
...其中ctx是你的ClassPathXmlApplicationContext,以避免需要调用getBean() - this
上的任何spring bean字段都将自动为你服务。
答案 1 :(得分:0)
有一种方法。你只需要阅读官方文档。相关部分为here。
修改:抱歉,误读了您的问题。你可以使用
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
并在应用程序启动时使用ServletContextListener
加载它。当您的应用程序启动时,如果您已正确配置bean连接,则不必调用 getBean()来访问所有bean。像使用Java SE一样对待它。