"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > يمكنك بسهولة إعداد حبوب زنبركية متعددة بتكوينات فريدة

يمكنك بسهولة إعداد حبوب زنبركية متعددة بتكوينات فريدة

تم النشر بتاريخ 2024-11-08
تصفح:596

Easily Set Up Multiple Spring Beans with Unique Configurations

هل سئمت من التسجيلات المتكررة لفاصوليا الربيع؟ أنت لست وحدك!

هل شعرت يومًا بالتعثر في تعريفات الفول المتكررة في Spring Boot؟ أنت لست وحدك! يمكن أن تصبح إدارة وحدات حبوب متعددة من نفس الفئة بتكوينات مختلفة أمرًا مملاً ومزدحمًا. لنفترض أنك بحاجة إلى شيء مثل هذا:

@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);
}

هذا الرمز ليس معقدًا، لكنه سرعان ما يصبح متكررًا، خاصة عند التعامل مع عدة حبوب من نفس النوع. من الناحية المثالية، سيكون لديك طريقة لتسجيل مثيلات متعددة بإعدادات مميزة دون تعليمات برمجية زائدة.

وهذا يختلف عن وجود وحدات فريدة لكل تطبيق للواجهة. بدلاً من ذلك، نحن نتحدث عن إعداد فصل واحد مع الاختلافات. على سبيل المثال، فكر في تطبيق يتصل بقواعد بيانات متعددة (مثل العملاء وإعداد التقارير والنسخ الاحتياطي). يحتاج كل اتصال إلى تكوين خاص به، مما يجعل من الصعب إدارته بدون فوضى. قد ينتهي بك الأمر بكتابة شيء مثل هذا:

@Bean
DatabaseService primaryDatabaseService() {
    return new DatabaseService("db-url-primary");
}

@Bean
DatabaseService reportDatabaseService() {
    return new DatabaseService("db-url-report");
}

يمكن أن يؤدي الحصول على حل أبسط إلى تبسيط التكوين بشكل كبير ويتيح لك التركيز بشكل أكبر على منطق التطبيق. أدخل MultiBeanConfig - مكتبة صغيرة قمت بإنشائها للمساعدة في إدارة تكوينات متعددة لنفس حبة الربيع.

تقديم MultiBeanConfig

يعمل MultiBeanConfig على تبسيط عملية إعداد مثيلات متعددة للفاصوليا بتكوينات منفصلة. من خلاله يمكنك:

  • تقليل التعليمات البرمجية المتكررة
  • مركزية إدارة التكوين
  • حافظ على قاعدة التعليمات البرمجية الخاصة بك نظيفة ومنظمة

الميزات الأساسية

  • إعداد الفول المتعدد: تحديد مثيلات متعددة لفئة واحدة.
  • التكوينات المخصصة: التحكم في الإعدادات لكل مثيل من خلال خصائص التطبيق الخاص بك.
  • القيم الافتراضية: تطبيق القيم الافتراضية تلقائيًا في حالة فقدان تكوينات معينة.
  • الحقن التلقائي: استخدم @Autowired بسهولة لحقن التبعية.

دليل خطوة بخطوة

1. أضف MultiBeanConfig إلى مشروعك

قم بتضمين التبعية في pom.xml الخاص بك:

io.github.olufemithompsonmultibeanconfig0.0.3

2. قم بإعداد فئة الفول

ضع علامة على فصلك باستخدام @MultiBean لجعله مؤهلاً لمثيلات متعددة:

@MultiBean
public class DatabaseService {
    // Your service logic
}

3. قم بتعريف الفول في ملف التكوين الخاص بك

تحديد الإصدارات الفريدة في خصائصك أو ملف YAML:

multibean:
  primary-database-service:
    class: DatabaseService
  report-database-service:
    class: DatabaseService

يؤدي هذا إلى تسجيل وحدات PrimaryDatabaseService وreportDatabaseService بالتكوينات الافتراضية. يقوم MultiBeanConfig تلقائيًا بترجمة الأسماء من حالة الكباب إلى حالة الجمل.

تخصيص التكوينات لكل حبة

لتعيين إعدادات منفصلة، ​​أضف خصائص مباشرة إلى تكوين كل حبة. فيما يلي مثال حيث يتصل كل مثيل بقاعدة بيانات مختلفة:

@MultiBean
public class DatabaseService {
   @Value("${database-config.connection-url}")
   private String connectionUrl;
}

تكوين كل مثيل في application.yml:

database-config:
  connection-url: 'jdbc:h2:default-url'

multibean:
  primary-database-service:
    class: DatabaseService
    database-config:
      connection-url: 'jdbc:mysql:primary-db-url'
  report-database-service:
    class: DatabaseService
    database-config:
      connection-url: 'jdbc:postgresql:report-db-url'

يمنح هذا الإعداد كل حبة عنوان URL فريدًا للاتصال. يمكن أيضًا تعريف الإعدادات المشتركة في قسم عام، مما يجعل التكوينات فعالة ويقلل التكرار.

طرق بديلة لحقن التكوينات

ليس عليك الاعتماد فقط على @Value لإدخال التكوينات. يسمح @ConfigurationProperties الخاص بـ Spring بتغليف الخصائص في فئة التكوين:

@ConfigurationProperties("database-config")
@Configuration
public class DatabaseConfig {
    private String connectionUrl;
    private int connectionTimeout;
    // Getters and Setters
}

ثم قم بإدخال DatabaseConfig مباشرة:

@MultiBean
public class DatabaseService {
   private final DatabaseConfig databaseConfig;
   public DatabaseService(DatabaseConfig databaseConfig) {
       this.databaseConfig = databaseConfig;
   }
}

استخدام الفاصوليا التي تم تكوينها

باستخدام MultiBeanConfig، أدخل حبوب الفول التي تم تكوينها بشكل فريد كما تفعل مع أي تبعية Spring:

@Service
public class ApplicationService {
   private final DatabaseService primaryDatabaseService;
   private final DatabaseService reportDatabaseService;

   public ApplicationService(DatabaseService primaryDatabaseService, DatabaseService reportDatabaseService) {
       this.primaryDatabaseService = primaryDatabaseService;
       this.reportDatabaseService = reportDatabaseService;
   }
}

الأفكار النهائية

يعمل MultiBeanConfig على تبسيط إدارة الفول في تطبيقات Spring Boot، خاصة عند التعامل مع إشارات الميزات أو مصادر البيانات أو اتصالات API المميزة. فهو يقلل من التكرار، ويحافظ على نظافة التعليمات البرمجية الخاصة بك، ويعزز إمكانية الصيانة. جربه وأخبرني كيف يعمل مع مشاريعك!

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/thompsonolufemi/easily-set-up-multiple-spring-beans-with-unique-configurations-3df1?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3