SpringMVC 錯誤分析:@Autowired Could not autowire field

在開發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;

發佈了118 篇原創文章 · 獲贊 36 · 訪問量 76萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章