0

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"
       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 Bean を作成し、それを RosterController に注入することを期待しています。しかし、 UserServiceImpl Bean が見つからないようです。

何が間違っている可能性がありますか?

4

2 に答える 2

0

これは、SpringがタイプのBeanを見つけることができなかったことを意味しますUserServiceUserServiceImplクラスを確認してください。
なぜXMLとアノテーションベースのアプローチの両方を使用してBeanを定義しているのか疑問に思っていますか?どちらかにこだわるといいですね。


編集:に注釈を
追加します。Springが次のオブジェクトを作成する必要があることを知るようになります@ComponentUserServiceImplUserServiceImpl

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

@pawelccbが使用について言及しているように

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

Spring構成ファイル内。
詳細については、このリンクを確認してください。

于 2012-09-19T08:38:07.303 に答える
0

UserServiceImpl は UserService を実装していません

編集:私も見えません

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

これはSpring構成全体ですか?

于 2012-09-19T07:29:25.193 に答える