我有一个很棒的网络应用程序。作为优化代码的一部分,我将它们分成三个模块。
Module 1 : Web
Module 2 : driver module
Module 3 : Reporting module
这里的模块1&模块3是弹簧项目,其中模块2当前是纯Java模块。
我想通过模块2访问模块3(在春天)。
应用程序上下文xmls存在于模块1和模块3中。(例如m1.xml和m3.xml)
我已将m1.xml中的m3.xml包含为
<import resource="classpath*:m3.xml" />
在第2单元中,我试图在模块3中引入自动装配引用。但是第一次使用自动装配字段会抛出空指针异常。
在组件扫描中,我添加了基本包,以便能够识别该类。
任何人都可以指导我如何重写模块2来解决这个问题(ApplicationContext xml?等)
我正在使用spring 3.1
答案 0 :(得分:1)
我想出了这个问题!
实际上来自Module-1(webapp),我正在调用驱动程序模块,并从那里调用报告模块。
问题是从驱动程序到报告,我正在使用新引用(新的Report())进行调用,因此这些不再由spring容器管理。通常,弹簧容器管理的对象只能自动连接。默认情况下,new()创建的类中的Autowired引用不会自动装配。
问题可以通过两种方式解决
http://seniorjava.wordpress.com/2013/04/03/spring-configurable-magic/(春天 - @Configurable)
OR
http://sujitpal.blogspot.in/2007/03/accessing-spring-beans-from-legacy-code.html(通过静态方法共享应用程序上下文。这对单元测试有副作用。)