"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 고유한 구성으로 여러 Spring Bean을 쉽게 설정

고유한 구성으로 여러 Spring Bean을 쉽게 설정

2024-11-08에 게시됨
검색:231

Easily Set Up Multiple Spring Beans with Unique Configurations

반복적인 Spring Bean 등록에 지치셨나요? 당신은 혼자가 아닙니다!

Spring Boot에서 반복되는 Bean 정의로 인해 어려움을 겪은 적이 있습니까? 당신은 혼자가 아닙니다! 서로 다른 구성으로 동일한 클래스의 여러 Bean을 관리하는 것은 지루하고 복잡해질 수 있습니다. 다음과 같은 것이 필요하다고 가정해 보겠습니다.

@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을 처리할 때 빠르게 반복됩니다. 이상적으로는 중복된 코드 없이 고유한 설정으로 여러 인스턴스를 등록할 수 있는 방법이 있습니다.

이는 인터페이스 구현마다 고유한 Bean을 갖는 것과 다릅니다. 대신, 우리는 변형된 하나의 클래스를 설정하는 것에 대해 이야기하고 있습니다. 예를 들어 여러 데이터베이스(예: 고객, 보고, 백업)에 연결하는 앱을 생각해 보세요. 각 연결에는 고유한 구성이 필요하므로 복잡함 없이 관리하기가 어렵습니다. 다음과 같이 작성하게 될 수도 있습니다.

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

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

더 간단한 솔루션을 사용하면 구성을 크게 간소화하고 애플리케이션 논리에 더 집중할 수 있습니다. MultiBeanConfig를 입력하세요. 동일한 Spring 빈에 대한 여러 구성을 관리하는 데 도움이 되도록 제가 만든 작은 라이브러리입니다.

MultiBeanConfig 소개

MultiBeanConfig는 별도의 구성을 사용하여 Bean의 여러 인스턴스 설정을 단순화합니다. 이를 통해 다음을 수행할 수 있습니다.

  • 반복적인 코드 줄이기
  • 구성 관리 중앙화
  • 코드베이스를 깔끔하고 체계적으로 유지하세요.

핵심 기능

  • 다중 빈 설정: 단일 클래스의 여러 인스턴스를 정의합니다.
  • 사용자 정의 구성: 애플리케이션 속성을 통해 인스턴스당 설정을 제어합니다.
  • 기본값: 특정 구성이 누락된 경우 자동으로 기본값을 적용합니다.
  • 자동 주입: 종속성 주입에 @Autowired를 쉽게 사용할 수 있습니다.

단계별 가이드

1. 프로젝트에 MultiBeanConfig 추가

pom.xml에 종속성을 포함합니다:


    io.github.olufemithompson
    multibeanconfig
    0.0.3

2. Bean 클래스 설정

클래스를 @MultiBean으로 표시하여 여러 인스턴스에 적합하게 만드세요.

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

3. 구성 파일에 빈 정의

속성 또는 YAML 파일에서 고유한 버전을 정의합니다.

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

기본 구성으로 PrimaryDatabaseService 및 ReportDatabaseService Bean을 등록합니다. MultiBeanConfig는 kebab-case에서 camelCase로 이름을 자동으로 변환합니다.

Bean별 구성 사용자 정의

별도의 설정을 할당하려면 각 Bean의 구성에 속성을 직접 추가하세요. 다음은 각 인스턴스가 서로 다른 데이터베이스에 연결되는 예입니다.

@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'

이 설정은 각 Bean에 고유한 연결 URL을 제공합니다. 공유 설정은 일반 섹션에서도 정의할 수 있으므로 구성이 효율적이고 중복이 줄어듭니다.

구성을 주입하는 다른 방법

구성 주입을 위해 @Value에만 의존할 필요는 없습니다. Spring의 @ConfigurationProperties는 구성 클래스에 속성을 캡슐화하는 것을 허용합니다:

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

구성된 Bean 사용

MultiBeanConfig를 사용하면 Spring 종속성과 마찬가지로 고유하게 구성된 Bean을 삽입할 수 있습니다.

@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는 특히 기능 플래그, 데이터 소스 또는 개별 API 연결을 처리할 때 Spring Boot 애플리케이션에서 Bean 관리를 간소화합니다. 중복성을 줄이고 코드를 깨끗하게 유지하며 유지 관리성을 향상시킵니다. 한번 시도해 보시고 귀하의 프로젝트에 어떻게 적용되는지 알려주세요!

릴리스 선언문 이 기사는 https://dev.to/thompsonolufemi/easily-set-up-multiple-spring-beans-with-unique-configurations-3df1?1에 복제되어 있습니다. 침해가 있는 경우에는 [email protected]으로 문의하시기 바랍니다. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3