2016-02-11 1 views
-1

L'année dernière, quand j'ai commencé à apprendre le printemps, je me souviens d'un article qui a expalisé que tous les pojos ne doivent pas être définis comme des haricots. Donc, je prévois de créer une application web, dites EmployeeMaintenance. Les fonctionnalités de CRUD sont là. Je vais sûrement finir par créer des pojos comme Employé, EmployeeSupplementaryDetails, Address, etc. Devrais-je faire ces beans et les configurer en xml ou annoter quoi que ce soit. Je suis sûr que ma compréhension du haricot ne suffit pas. Je sais que Dbconn, les services, etc devraient certainement être déclarés comme bean. Tout ce dont j'ai besoin, c'est quels sont les paramètres que je devrais considérer avant de faire un pojo un haricot de printemps.Sélection des bons candidats pour le haricot de printemps. Quoi à quoi ne pas

Répondre

1

Règle générale pour faire une classe Java un bean Spring est de vous demander si vous avez besoin d'injecter un objet dans un autre objet ou si vous voulez que l'objet soit géré par des composants Spring. Les classes que vous avez listées comme exemples ne semblent pas être de bons candidats pour être des beans de printemps - elles représentent des données de modèle et seront passées en tant que paramètres de méthodes de certains services. Exemples de haricots d'application CRUD typiques:

  • EmployeeService (vous voulez injecter au contrôleur ou tout autre service)
  • EmployeeRepository/EmployeeDao
  • EmployeeController (il sera bean géré par le framework MVC Spring)
  • etc.

Les haricots de printemps sont des blocs de construction de votre application. Supposons que vous deviez créer une application Web pour stocker et gérer les enregistrements des employés (création, récupération, mise à jour, suppression). Ce dont vous aurez besoin, c'est d'un contrôleur Web qui traitera les demandes entrantes pour plusieurs opérations (EmployeeController). Une bonne pratique est que le contrôleur n'implémente aucune logique métier - tout ce qu'il devrait faire est de déléguer le travail aux beans de service. Donc, vous auriez besoin d'un haricot comme EmployeeService. Ensuite, le contrôleur demande au service de faire un peu de travail (donnez-moi la liste des employés/retirez John Smith de la base de données/changez le salaire pour Ann Jackson/etc). Le service sera donc la dépendance du contrôleur (le service est injecté dans le contrôleur). Le service peut également avoir certaines dépendances (comme l'objet de référentiel, qui est chargé de gérer la communication avec le stockage de données) et ces dépendances seront injectées dans le service. La gestion des dépendances est la caractéristique principale de Spring.

Une bonne pratique dans la programmation orientée objet est d'avoir de petites classes qui sont responsables de faire un type d'actions. De tels objets sont beaucoup plus faciles à tester et à comprendre. Le plus de classes que vous avez, l'application de construction à partir de blocs est plus difficile, il vaut donc la peine de le déléguer à un cadre comme le printemps. Sans Spring, vous devrez créer une classe de contrôleurs, puis créer un service à l'intérieur, puis créer d'autres dépendances, et ainsi de suite. Le printemps le fait pour vous, tout ce que vous devez faire est de déclarer les dépendances et elles seront automatiquement injectées. Si vous souhaitez remplacer l'implémentation de votre service par une autre (par exemple, un référentiel qui utilise un fichier XML pour stocker des données avec un référentiel stockant des données dans une base de données relationnelle), il vous suffit de modifier votre définition de bean.

En ce qui concerne les beans gérés par Spring, un exemple typique est le gestionnaire de transactions de base de données (par exemple org.springframework.orm.jpa.JpaTransactionManager). Si vous définissez un tel bean et déclarez quelles méthodes doivent être transactionnelles, Spring s'occupera de la gestion des transactions (ouvrira, validera ou annulera automatiquement les transactions).

+0

Merci c'est le genre de la réponse que je m'attendais. Lorsque vous avez besoin d'injecter un objet à un autre. Ou être géré par le composant de printemps. Pouvez-vous donner un exemple de scénario en temps réel? Juste essayer de comprendre de votre point de vue –