SpringMVC 錯誤分析:@Autowired Could not autowire field
阿新 • • 發佈:2019-01-10
在開發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;