在開發SpringMVC中碰到了組件不能@Autowired的錯誤,以前好像也碰到過,怎麼解決的忘記了,今天記在這裏。可供碰到同樣問題的朋友參考。
下面是Controller組件:
@Controller
public class ManageUserController {
private UserService userService;
@Autowired //此處自動注入userService
public void setUserService(UserService userService) {
this.userService = userService;
}
.....
}
其中Service組件爲:
@Transactional
@Service("userService")
public class UserService implements UserServiceInf {
private UserDao userDao;
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void createUser(User user) {
this.userDao.createUser(user);
}
....
}
運行系統後總是出現userService不能autowired注入的錯誤。費了半天勁,最後總是解決了。Spring的注入基於接口實現,基於接口的方式一是可以使得各個組件鬆耦合,而且也可以輕鬆的替代某一組件。
所以應該講組件引用改爲接口方式。
Controller組件中的userService組件應
由:private UserService userService;
改爲: private UserServiceInf userService;
同理Service組件中的userDao組件應
由: private UserDao userDao;
改爲: private UserDaoInf userDao;
下面是Controller組件:
@Controller
public class ManageUserController {
private UserService userService;
@Autowired //此處自動注入userService
public void setUserService(UserService userService) {
this.userService = userService;
}
.....
}
其中Service組件爲:
@Transactional
@Service("userService")
public class UserService implements UserServiceInf {
private UserDao userDao;
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void createUser(User user) {
this.userDao.createUser(user);
}
....
}
運行系統後總是出現userService不能autowired注入的錯誤。費了半天勁,最後總是解決了。Spring的注入基於接口實現,基於接口的方式一是可以使得各個組件鬆耦合,而且也可以輕鬆的替代某一組件。
所以應該講組件引用改爲接口方式。
Controller組件中的userService組件應
由:private UserService userService;
改爲: private UserServiceInf userService;
同理Service組件中的userDao組件應
由: private UserDao userDao;
改爲: private UserDaoInf userDao;