2013-07-09 82 views
0

我開發了一個包含2個項目的基本應用程序。第一個是數據層,第二個是一個Web應用程序(MVC項目)@autowired在Spring MVC中不工作

數據層包含以下

@Entity 
@Table(name="users") 
public class User implements Serializable { 
..... 
} 

public interface UserBase { 
..... 
    } 

    @Repository 
    public interface UserRepository extends JpaRepository <User, Long>{ 
    } 



    @Service 
    public class UserImpl implements UserBase { 
    private final UserRepository repository; 
    @Autowired 
    public UserImpl(UserRepository repository) { 
    this.repository = repository; 
    ...... 
    } 


    @RunWith(SpringJUnit4ClassRunner.class) 
    @ContextConfiguration("Config/applicationContext.xml") 
    public class testcase1 { 

    @Autowired 
private UserImpl userImpl; 

    @Test 
    public void test() { 
    ..... 
    UserImpl.save(user); 
    ..... 
    } 

網絡應用 @Controller 公共類ManageUser {

@Autowired 
UserImpl userImpl; 

@RequestMapping("/addUser/") 
public ModelAndView addUser() { 
UserImpl.save(user); 
..... 
} 
} 

當我運行單元測試代碼成功,沒有發現錯誤。 但是,當我把數據層的輸出jar放入spring mvc web app的lib文件夾中,並在build bath中添加了對數據層的引用時,我收到一條錯誤消息
注入自動裝配依賴失敗;嵌套的例外是org.springframework.beans.factory.BeanCreationException:無法自動裝配領域:com.my.domin.impl.UserImpl

注: 我使用Tomcat。 我用流動配置:

<jpa:repositories base-package="com.sanatech.repository" /> 
    <context:component-scan base-package="com.my.repository"/> 
    <context:component-scan base-package="com.my.domin.impl"/> 
    <context:component-scan base-package="com.my.domin"/> 
    <context:component-scan base-package="com.my"/> 
    <context:component-scan base-package="com.my.manageuser.controller"/> 
    <tx:annotation-driven/> 
    <context:annotation-config /> 

編輯

當我分離的單元測試一個新的項目,並添加參考構建浴中的數據層罐子我發現的相同的異常。

回答

0

你確定這個異常豈不等於從你的測試用例提出:

public class testcase1 { 

    @Autowired 
private UserImpl userImpl; 

您可以明確地在@Service註釋設置bean的名字和@Autowired使用這個名稱,以確保正確的配置。

+0

我試過了,我發現了同樣的例外 – user2564640