0

的applicationContext.xml:春DI不滿意依賴性表達

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 

    <bean id="user" class="com.pomkine.pottyauth.domain.User"/> 
    <bean id="userdao" class="com.pomkine.pottyauth.persistance.GaeUserDao"/> 
    <bean id="userservice" class="com.pomkine.pottyauth.service.UserServiceImpl"> 
     <constructor-arg ref="userdao"/> 
    </bean> 
</beans> 

控制器:

@Controller 
public class RosterController { 

    private UserService userService; 

    @Inject 
    public RosterController(UserService userService){ 
     this.userService=userService; 
    } 

    @RequestMapping(value = {"/userRoster"}, method = RequestMethod.GET) 
    public String showRosterPage(Map<String,Object> model){ 
     model.put("users",userService.getAllUsers()); 
     return "userRoster"; 
    } 
} 

所以我想UserService被注入到我的控制器。但我發現以下異常:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'rosterController' defined in file [S:\Coding\Idea_workspace\pottyAuth\target\pottyAuth-1.0\WEB-INF\classes\com\pomkine\pottyauth\mvc\RosterController.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [com.pomkine.pottyauth.service.UserService]: : No matching bean of type [com.pomkine.pottyauth.service.UserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. 

這裏是我UserServiceImpl類:

public class UserServiceImpl implements UserService { 

    private UserDao dao; 



    public UserServiceImpl(UserDao dao){ 
     this.dao=dao; 
    } 
    @Override 
    public User getUser(User user) { 
     return dao.getUser(user); 
    } 

    @Override 
    public void addUser(User user) { 
     dao.addUser(user); 
    } 

    @Override 
    public List getAllUsers() { 
     return dao.getAllUsers(); 
    } 
} 

所以我期待Spring容器來創建UserServiceImlp豆,注入RosterController。但它似乎無法找到UserServiceImpl bean。

什麼可能是錯的?

回答

0

UserServiceImpl不執行UserService

編輯: 也看不到

<context:component-scan base-package=""> 

這是整個Spring配置?

0

這意味着Spring無法找到任何類型的UserService豆。請檢查您的UserServiceImpl課程。
想知道爲什麼你使用基於XML和註解的方法來定義bean?如果你堅持其中任何一個都會很好。


編輯:
添加@Component註釋UserServiceImpl。所以說春天會來知道它應該創建的UserServiceImpl

@Component 
public class UserServiceImpl implements UserService 
{ 
..... 
} 

一個對象,因此@pawelccb提到在Spring配置文件中使用

<context:component-scan base-package="your.base.package"> 


查看詳細信息link

+0

是的,我明白了。但爲什麼找不到?我在配置文件中定義了我的bean,並希望我的UserServiceImpl類被注入到RosterController中。所以我用@Inject。順便說一句如何在applicationContext.xml中定義我的控制器bean? – pomkine

+0

@pomkine:我已經更新了我的答案。 – xyz

相關問題