没有模型的实现.用户DAO被绑定.在定位模型时.用户道



我正在使用play创建示例应用程序。

我在运行时收到这些异常:

1) No implementation for models.UserDAO was bound.
      while locating models.UserDAO
        for parameter 0 at services.impl.UserServiceImpl.<init>(UserServiceImpl.java:24)
      while locating services.UserService
        for parameter 0 at controllers.UserController.<init>(UserController.java:26)
      while locating controllers.UserController
        for parameter 4 at router.Routes.<init>(Routes.scala:44)
      while locating router.Routes
      while locating play.api.inject.RoutesProvider
      while locating play.api.routing.Router
        for parameter 0 at play.api.http.JavaCompatibleHttpRequestHandler.<init>(HttpRequestHandler.scala:200)
      while locating play.api.http.JavaCompatibleHttpRequestHandler
      while locating play.api.http.HttpRequestHandler
        for parameter 4 at play.api.DefaultApplication.<init>(Application.scala:221)
      at play.api.DefaultApplication.class(Application.scala:221)
      while locating play.api.DefaultApplication
      while locating play.api.Application

谁能帮我解决这个问题。

我的课程如下,

用户道.java

@Named
@Singleton
public interface UserDAO extends CrudRepository<User, Long> {
    @Query("select userId,firstName from User where userId =:userId")
    public List<Object[]> getUserDetails(@Param("userId") Integer userId);
}

用户控制器.java

@Named
@Singleton
public class UserController extends Controller {
    private final UserService userService;
    @Inject
    public UserController(final UserService userService) {
        this.userService = userService;
    }
    public Result getUserDetails(Integer userId) {
        JsonNode output = Json.toJson(userService.getUserDetails(userId));
        return ok(output);
    }
}

UserServiceImpl.java

@Named
@Singleton
public class UserServiceImpl implements UserService {
    private final UserDAO userDAO;
    @Inject
    public UserServiceImpl(final UserDAO userDAO)
    {
        this.userDAO=userDAO;
    }
    public MainDTO getUserDetails(Integer userId)
    {
        List<Object[]> query=userDAO.getUserDetails(userId);
        List<UserDTO> list= new LinkedList<UserDTO>();
        UserDTO userDTO=new UserDTO();
        MainDTO mainDTO=new MainDTO();
        for(Object[] rows : query)
        {
            Integer Id = (Integer)rows[0];
            String name = (String)rows[1];
            userDTO.setNumber(Id);
            userDTO.setName(name);
            list.add(userDTO);
        }
        mainDTO.setData(list);
        return mainDTO;
    }
}

请帮助我找出上述问题的确切原因。

提前谢谢。

您应该自动连接或注入它。

@Autowired
private final UserDAO userDAO;

servlet-dispatcher.xml

 <bean id="UserDAO " class="com.dao.UserDAOImpl"></bean>

您还可以在构造函数中使用@Qualifier

@Autowired(required=false)
public UserController(@Qualifier("UserServiceImpl") final UserService userService) {
    this.userService = userService;
}

最新更新