2016-11-13 51 views
1

我遇到以下問題。我的應用程序不會在啓動時創建我的服務,當我嘗試在使用@Autowired注入它們之後在我的Maven測試中使用它們時,最終得到了NullPointerExceptionSpring在啓動時沒有實例化bean

我不明白它來自哪裏。我做了一些研究,但我仍然不明白爲什麼它不起作用。

這裏是課堂,我的自動裝配Autowired administrationActionService爲空:

public class AdministrationActionTests extends EntityTests { 

    @Autowired 
    AdministrationActionService administrationActionService; 

    @Test 
    public void equalsTests() { 

     administrationActionService.getExample(); 

     [...] 

類:

package com.bloombooking.services; 
@org.springframework.stereotype.Service 
public class AdministrationActionService extends ServiceEntity{ 

    @Autowired private AdministrationActionDao administrationActionDao; 

    [...] 

而且我ApplicationContext.xml。我把它放在src/ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:component-scan base-package="com.bloombooking.services, com.bloombooking.dao"/> 

</beans> 

我真的不知道我可能做錯了。有人能幫我嗎?謝謝!

+1

如何'AdministrationActionTests'知道應用程序上下文文件是否存在? 「EntityTests」的外觀是什麼? – Reimeus

+0

唔...你是什麼意思?我需要在AdministrationActionTests中建立一個到applicationContext文件的鏈接? EntityTests是空的。 – Antoine

回答

2

爲了使它工作,你必須做如下修改:

  1. 添加@RunWith(SpringJUnit4ClassRunner.class)到您的類。
  2. 添加@ContextConfiguration("path_to_you_spring_beans.xml")

,以便類變爲:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("path_to_you_spring_beans.xml") 
AdministrationActionTests { 
} 
+0

它的工作!謝謝你,兄弟 !只是一個問題:我必須將@ContextConfiguration添加到我的所有文件中?還是僅用於Maven測試? – Antoine

+0

你需要在所有的測試類 – Jobin

+0

好的,謝謝你的建議:) – Antoine