我是Spring的新手,有一个问题,有点困难2天。 我想发布问题,看看我是否得到任何答案。 我正在实施基于休息的服务。在我的东西中,我们有三个不同的模块 1)服务模块(我们有服务实现,也定义了url) 2)业务模块(这是我们从数据库获取数据后执行一些业务逻辑的模块) 3)数据模块(只是从数据库中获取和放置内容)
每个模块都有自己的应用程序上下文文件。我有一个通用配置文件,它加载所有上下文文件以及特定于环境的任何属性文件 在我在每个模块的测试中,我也加载了加载我的上下文文件的通用上下文文件 通用上下文文件如下所示
除此之外我还有一些其他的bean加载所有特定于env的属性文件。
所以我的域模块上下文如下所示
<bean id="DALConfigLoader" class="ConfigurationInit" init-method="initializeConnection" >
<constructor-arg value="classpath:/environmentConfig/$env/config.json"/>
</bean>
所以基本上我在这里加载一个配置文件,在加载任何东西之前必须加载它。它必须调用intilizeconnection方法,它基本上创建了连接poling和所有..
<bean id="dao" class="OfferPriceDAOImpl" depends-on="DALConfigLoader">
<constructor-arg index="0" ref="offerprice"></constructor-arg>
<constructor-arg index="1" ref="myoracl"></constructor-arg>
<constructor-arg index="2"><null/></constructor-arg>
</bean>
这是我对数据库表进行crud操作的bean,正如我之前提到的,在加载任何dal之前,它必须加载DALConfigLoader
2)在我的业务模块中,我有以下代码
@Component
public class ManagerImpl implements IManager {
@Autowired
private IOfferPriceDAO offerPriceDAO;///this is my domain code
}
,我的配置文件如下所示
<beans>
<context:component-scan base-package="basepackage"/>
</beans>
在我的业务模块测试中,我加载了这样的文件
@ContextConfiguration(locations = { "classpath:GenericContext.xml" })
public class ManagerImplTest extends AbstractTestNGSpringContextTests {
@Autowired
ItemPricingManager mgr;
}
所以在这里加载businesscontext文件以及域上下文文件并且工作正常..
3)在我的服务模块中,我有类似的东西,我的服务impl代码如下所示
@Component public class ServiceImpl实现Service {
@Autowired
private ItemPricingManager itemPricingManager;
}
然后在上下文文件中如下所示
<beans>
<context:component-scan base-package="basepackage" />
</beans>
在我的测试中我做了以下
@ContextConfiguration(locations = { "classpath:GenericContext.xml" })
public class ServiceTest extends AbstractTestNGSpringContextTests {
@Autowired
Service mgr;
}
此上下文文件应加载三个上下文文件,如服务,业务以及域,以及何时应首先创建DALCOnfigLoader bean,因为这是具有配置事物并且依赖于DAOImpl类的那个 但是当我在这里运行它没有加载mgr并且它失败了.. 它主要是失败的,因为加载配置文件的根bean没有... 所以不确定什么可以解决这个问题...我不确定bean正在以什么顺序创建它应该创建.. 我的理解是它应该创建最内部的bean,它依赖于DALConfigLoader,它应该加载confugration文件。 它没有发生......我不确定出了什么问题......
我得到的例外是
java.lang.IllegalStateException:无法加载ApplicationContext at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157) 最后 引起:java.lang.NullPointerException
这种情况正在发生,因为初始bean没有被加盖,这就是定义的内容。 测试如下所示
@ContextConfiguration(locations = {"classpath:GenericContext.xml"})
public class ItemPricingServiceImplTest extends AbstractTestNGSpringContextTests{
@Autowired
private IService itemPricingSer;