我正在使用play创建示例应用程序。没有model.UserDAO绑定的实现。同时定位models.UserDAO
我得到这些异常运行时:
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
谁能帮我解决这个问题。
和我的类是下面,
UserDAO.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);
}
UserController.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;
}
}
请帮我找出上述问题的确切原因是什么。
在此先感谢。
哪里是你的 '的UserDAO' 的实现中使用@Qualifier?你需要用'ImplementedBy'或者在一个guice模块中绑定它。 – rethab
感谢您的回复。现在我使用@ImplementedBy(UserServiceImpl.class)作为注释,但现在又出现了另一个问题:services.impl.UserServiceImpl不扩展models.UserDAO。 ,同时在services.impl.UserServiceImpl处为参数0定位models.UserDAO 。(UserServiceImpl.java:24) 查找services.UserService作为UserServiceImple不会扩展DAO –
“@ Singleton”或“@ Inject”注释的包是什么?它应该是javax.inject.Singleton和javax.inject.Inject。但还有其他类似Guice,因为你想使用Spring,他们不会工作。 – Kris