Fatigué des inscriptions répétitives de haricots de printemps ? Vous n'êtes pas seul !
Vous est-il déjà arrivé de vous enliser dans des définitions répétées de beans dans Spring Boot ? Vous n'êtes pas seul ! La gestion de plusieurs beans de la même classe avec des configurations différentes peut devenir fastidieuse et encombrée. Disons que vous avez besoin de quelque chose comme ceci :
@Bean MyService beanA() { // Set Configuration for bean A Configuration a = new... a.setUrl(.....) return new MyService(a); } @Bean MyService beanB() { // Set Configuration for bean A Configuration b = new... b.setUrl(.....) return new MyService(b); }
Ce code n'est pas complexe, mais il devient vite répétitif, surtout lorsqu'il s'agit de plusieurs beans du même type. Idéalement, vous auriez un moyen d'enregistrer plusieurs instances avec des paramètres distincts sans code redondant.
Cela diffère du fait d'avoir des beans uniques pour chaque implémentation d'une interface. Au lieu de cela, nous parlons de créer une classe avec des variantes. Par exemple, pensez à une application qui se connecte à plusieurs bases de données (par exemple, client, reporting et sauvegarde). Chaque connexion nécessite sa propre configuration, ce qui rend difficile sa gestion sans encombrement. Vous pourriez finir par écrire quelque chose comme ceci :
@Bean DatabaseService primaryDatabaseService() { return new DatabaseService("db-url-primary"); } @Bean DatabaseService reportDatabaseService() { return new DatabaseService("db-url-report"); }
Avoir une solution plus simple pourrait considérablement rationaliser votre configuration et vous permettre de vous concentrer davantage sur la logique de l'application. Entrez MultiBeanConfig - une petite bibliothèque que j'ai créée pour aider à gérer plusieurs configurations pour le même bean Spring.
MultiBeanConfig simplifie la configuration de plusieurs instances d'un bean avec des configurations distinctes. Avec lui, vous pouvez :
Incluez la dépendance dans votre pom.xml :
<dependency> <groupId>io.github.olufemithompson</groupId> <artifactId>multibeanconfig</artifactId> <version>0.0.3</version> </dependency>
Marquez votre classe avec @MultiBean pour la rendre éligible à plusieurs instances :
@MultiBean public class DatabaseService { // Your service logic }
Définissez des versions uniques dans vos propriétés ou votre fichier YAML :
multibean: primary-database-service: class: DatabaseService report-database-service: class: DatabaseService
Cela enregistre les beans PrimaryDatabaseService et reportDatabaseService avec les configurations par défaut. MultiBeanConfig traduit automatiquement les noms de kebab-case en camelCase.
Pour attribuer des paramètres distincts, ajoutez des propriétés directement à la configuration de chaque bean. Voici un exemple où chaque instance se connecte à une base de données différente :
@Bean MyService beanA() { // Set Configuration for bean A Configuration a = new... a.setUrl(.....) return new MyService(a); } @Bean MyService beanB() { // Set Configuration for bean A Configuration b = new... b.setUrl(.....) return new MyService(b); }
Configurez chaque instance dans application.yml :
@Bean DatabaseService primaryDatabaseService() { return new DatabaseService("db-url-primary"); } @Bean DatabaseService reportDatabaseService() { return new DatabaseService("db-url-report"); }
Cette configuration donne à chaque bean une URL de connexion unique. Les paramètres partagés peuvent également être définis dans une section générale, rendant les configurations efficaces et réduisant la redondance.
Vous n'êtes pas obligé de compter uniquement sur @Value pour injecter des configurations. @ConfigurationProperties de Spring permet d'encapsuler des propriétés dans une classe de configuration :
<dependency> <groupId>io.github.olufemithompson</groupId> <artifactId>multibeanconfig</artifactId> <version>0.0.3</version> </dependency>
Ensuite, injectez directement DatabaseConfig :
@MultiBean public class DatabaseService { // Your service logic }
Avec MultiBeanConfig , injectez vos beans configurés de manière unique comme vous le feriez avec n'importe quelle dépendance Spring :
multibean: primary-database-service: class: DatabaseService report-database-service: class: DatabaseService
MultiBeanConfig rationalise la gestion des beans dans les applications Spring Boot, en particulier lors de la gestion des indicateurs de fonctionnalités, des sources de données ou des connexions API distinctes. Il réduit la redondance, maintient votre code propre et améliore la maintenabilité. Essayez-le et dites-moi comment cela fonctionne pour vos projets !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!