私は Controller -> Service -> DAO パターンに従っています。DAO 実装を呼び出すと、DTO/Data オブジェクトが返されます。次に、サービス層に渡され、それぞれのビジネス オブジェクトとデータ オブジェクトがまとめられます。そのようです:
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 をビジネス クラスに Autowire する必要がありますが、User Service で 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());
}
}
自分がやりたいことを実行できるようにするために従うことができるパターンはありますか?