我遵循Controller - > Service - > DAO模式。當我調用DAO實現時,我得到一個DTO/Data對象。然後將其傳遞給服務層,將它的各個業務對象和它的數據對象結合在一起。像這樣:如何在Spring中自動裝入業務對象
public User getUserById(int id) {
return new User(userDAO.getUserById(id));
}
class User {
private UserDTO userDTO;
public User(UserDTO userDTO) {
this.userDTO = userDTO;
}
}
我想要做的是將所有業務邏輯封裝在業務類中,但我需要額外的依賴關係。 例如,我希望能夠做這樣的事情:
//... some code
User user = userService.getByUserId(1);
user.delete(); // this should delete the user from the database
爲了讓我刪除用戶這種方式,我需要自動裝配的UserService到商務艙但這不會因爲我手動實例化用戶服務中的User類。
class User {
@Autowired
private UserService userService; // this won't work since I call instantiate User myself, ie. new User()
private UserDTO userDTO;
public User(UserDTO userDTO) {
this.userDTO = userDTO;
}
public boolean delete() {
userService.deleteByUserId(userDTO.getId());
}
}
有沒有一種模式可以讓我做我想做的事?
刪除是在業務類中。 – user1218776 2013-03-16 23:33:11
那你爲什麼要從用戶對象中調用它?只需在需要的地方調用userService.deleteUser(user) – 2013-03-16 23:35:20
隨着代碼變得越來越複雜,我需要將功能複製到多個地方。我想重複使用相同的刪除邏輯。我不能將所有的刪除邏輯放在服務類中,因爲那樣它就不會太可重用。 – user1218776 2013-03-16 23:39:36