2014-01-07 112 views
1

我有一个很大的web应用程序。作为优化代码的一部分,我将它们分成了三个模块。Spring配置 - 多模块Maven项目

Module 1 : Web 
Module 2 : driver module 
Module 3 : Reporting module 

这里模块1 &模块3是弹簧的项目,其中,作为该模块2是目前纯Java模块。

我想通过模块访问模块3(其是在弹簧)2.

应用上下文个XML存在对于模块1和模块3(说m1.xml和m3.xml)

在m1.xml

我已经包括m3.xml作为

<import resource="classpath*:m3.xml" /> 

在模块2中,我试图在模块3介绍自动装配参考类但自动装配Autowired领域的第一次使用抛出一个空指针异常。

在组件扫描中,我添加了基础包,以便它能够识别类。

任何一个可以指导我如何重写模块2来解决这个问题(ApplicationContext的XML?等等)

我用弹簧3.1

+0

您试图自动装入/注入Spring组件的依赖关系的类是什么?如果这不是一个独立的spring组件,我认为你不能在它中注入任何依赖。 – Hrishikesh

+0

是的,它是一个弹簧组件。即说ReportService是M3中的一个注释类。我想在M2中为这个类引入一个自动装配参考 – appu

回答

1

我想通了这个问题!

其实从Module-1(webapp),我打电话给驱动程序模块,然后从那里调用报告模块。

问题是,从驱动程序到报告,我打电话使用新的引用(新报告()),所以这些不再由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(分享通过静态方法应用程序上下文这对单元测试的副作用。)