在春天用bean自动装配问题

时间:2013-03-05 05:58:48

标签: spring

我是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;

0 个答案:

没有答案