Comment dois-je gérer enregistrés et non des exceptions en Java Config @Bean méthode pour afficher conviviale à la cause de l'erreur?[dupliquer]

StackOverflow https://stackoverflow.com//questions/25004905

Question

Je suis en train d'élaborer un petit spring-boot-based application en ligne de commande.La classe principale a un @Autocâblés annotée champ @Autowired Repository repository; dont la construction recette vous est offerte en Java Config classe qui a une @Bean-méthode annotée @Bean Repository repository(){...}.

Le @Bean-méthode annotée contient du code qui peut jeter enregistrés et non des exceptions.@Bean Repository repository(){...//exceptions}

Mon objectif est de créer une application conviviale qui journaux de brefs messages à niveau d'enregistrement plutôt que de longues traces de pile.

Actuellement, une exception en Java Config @Bean-méthode annotée entraîne l'application de sortir avec o.s.boot.SpringApplication: Application startup failed message et une très longue trace de la pile.

Je me demande si il ya une bonne façon de traiter au moins typique des exceptions (qui j'en suis conscient) en Java Config @Bean-méthode annotée de journal convivial de brefs messages utiles pour le dépannage.

Je suppose que cette stratégie pourrait s'attendre ajout de code de gestion des exceptions en Java Config classe, mais je n'ai jamais vu de code accessible Java Config classes, ce qui suggère code de gestion des exceptions en Java Config classes pourrait être une mauvaise pratique.

Je vous remercie.

Était-ce utile?

La solution

Je pense que vous avez quelques options ici, et qui est le meilleur est en grande partie à la préférence personnelle, et la structure de votre application.

Une option serait d'effectuer toutes les de la validation de l'entrée avant d'appeler SpringApplication.run().Ce serait le travail de toute arguments de ligne de commande, mais ce serait fastidieux, au mieux, pour quoi que ce soit configuré via application.properties.

Plutôt que de lancer des exceptions à partir de votre @Bean méthodes, vous pouvez les attraper et de les gérer de façon appropriée.Si le problème est mineur vous pourriez vous connecter une info ou un message d'avertissement expliquant le problème et permettre à l'application de continuer.Si le problème est catastrophique, vous pourriez vous connecter, un message d'erreur et ensuite appeler System.exit().Bien que cela ne fournissent utilisateur conviviale de l'erreur de déclaration pour toutes les exceptions levées pendant que votre @Bean les méthodes sont appelés, vous serez toujours à gauche avec des traces de pile pour toutes les exceptions qui se produisent après que.

Enfin, vous pouvez placer l'appel SpringApplication.run() dans un bloc try-catch.Vous pouvez ensuite examiner l'exception interceptée et de la chaîne de causes à déterminer un message d'erreur approprié pour ouvrir une session.L'avantage de cette approche est qu'il vous permettra de fournir un message d'erreur conviviale pour toute exception qui provoque SpringApplication.run() à l'échec, et pas seulement celle qui est générée à partir de l'un de vos @Bean des méthodes.

En supposant que il y a des arguments de ligne de commande pour valider, je serais probablement utiliser une combinaison de la première et de la troisième option.Pour la première j'avais utiliser un CLI bibliothèque comme JOpt Simple pour rendre les choses un peu plus facile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top