Je suis le contrôleur -> Service -> modèle DAO. Lorsque j'appelle une implémentation DAO, je récupère un objet DTO/Data. Ce qui est ensuite transmis à la couche de service, regroupant son objet métier respectif et son objet de données. Comme si:Comment faire pour automatiser des objets métier au printemps
public User getUserById(int id) {
return new User(userDAO.getUserById(id));
}
class User {
private UserDTO userDTO;
public User(UserDTO userDTO) {
this.userDTO = userDTO;
}
}
Ce que je voudrais faire est envelopper toute ma logique métier dans la classe affaires, mais je nécessite des dépendances supplémentaires. Par exemple, je voudrais être en mesure de faire quelque chose comme ceci:
//... some code
User user = userService.getByUserId(1);
user.delete(); // this should delete the user from the database
Pour me supprimer l'utilisateur de cette façon, il faudrait que j'autowire la UserService dans la classe affaires, mais ce ne sera pas fonctionne depuis que j'instancie manuellement la classe User dans le service utilisateur.
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());
}
}
Y a-t-il un motif que je peux suivre pour me permettre de faire ce que je veux?
La suppression est dans la classe d'affaires. – user1218776
Alors, pourquoi voulez-vous l'appeler à partir de l'objet utilisateur? appelez userService.deleteUser (utilisateur) là où vous en avez besoin –
À mesure que le code devient plus complexe, j'ai besoin que la fonctionnalité soit dupliquée à plusieurs endroits. Je voudrais réutiliser la même logique de suppression partout. Je ne peux pas placer toute la logique de suppression dans la classe de service car elle ne sera pas trop réutilisable. – user1218776