엔터프라이즈 관련 기능

2025. 1. 16. 16:38Spring Framework/Spring IoC

엔터프라이즈 관련 기능은 주로 대규모 애플리케이션 개발을 지원하기 위한 추가 기능입니다. 이들은 주로 편의성, 확장성, 엔터프라이즈 통합, 그리고 유지보수성을 강화하기 위해 설계된 기능들입니다.

1. 메시지 소스(MessageSource) 지원

  • 다국어 처리(i18n)를 지원하기 위해 메시지 소스를 관리합니다.
  • ApplicationContext는 메시지 소스(MessageSource)를 내장하고 있어 다국어 지원 메시지를 로드할 수 있습니다.

예제

# messages.properties (기본)
greeting=Hello!

# messages_ko.properties (한국어)
greeting=안녕하세요!
@Component
public class MessageService {
    @Autowired
    private MessageSource messageSource;

    public String getGreeting(String locale) {
        return messageSource.getMessage("greeting", null, new Locale(locale));
    }
}

2. 이벤트 시스템(Event Propagation)

  • ApplicationContext는 이벤트 게시 및 리스닝 기능을 제공합니다.
  • 이를 통해 애플리케이션의 구성 요소 간에 느슨하게 결합된 이벤트 기반 통신을 구현할 수 있습니다.

예제

// 이벤트 클래스
public class CustomEvent extends ApplicationEvent {
    public CustomEvent(Object source) {
        super(source);
    }
}

// 이벤트 리스너
@Component
public class CustomEventListener {
    @EventListener
    public void handleCustomEvent(CustomEvent event) {
        System.out.println("Received event: " + event.getSource());
    }
}

// 이벤트 게시
@Component
public class EventPublisher {
    @Autowired
    private ApplicationEventPublisher publisher;

    public void publishEvent() {
        publisher.publishEvent(new CustomEvent("Event data"));
    }
}

3. 애플리케이션 수준의 라이프사이클 관리

  • ApplicationContext는 컨텍스트의 시작, 정지, 종료를 포함한 애플리케이션 라이프사이클을 관리합니다.
  • ApplicationContext를 통해 빈의 초기화 및 종료 메서드를 더 쉽게 구성할 수 있습니다.

주요 인터페이스:

  • Lifecycle: 애플리케이션의 시작 및 종료를 수동으로 제어.
  • SmartLifecycle: 복잡한 애플리케이션 컨텍스트의 자동 시작 및 정지 지원.

4. 환경(Environment) 및 프로파일(Profile) 관리

  • ApplicationContext는 환경 변수와 프로파일 기반 구성을 지원합니다.
  • 이를 통해 개발 환경(예: 개발, 테스트, 프로덕션)에 따라 다른 설정을 적용할 수 있습니다.

예제

@Profile("dev")
@Configuration
public class DevConfig {
    @Bean
    public DataSource devDataSource() {
        return new H2DataSource();
    }
}

@Profile("prod")
@Configuration
public class ProdConfig {
    @Bean
    public DataSource prodDataSource() {
        return new MySQLDataSource();
    }
}

5. 통합 및 컨텍스트 상속

  • ApplicationContext는 여러 컨텍스트를 계층 구조로 사용할 수 있습니다.
  • 상위 컨텍스트는 공통 빈을 제공하고, 하위 컨텍스트는 특정 빈을 제공할 수 있습니다.
  • 예: 웹 애플리케이션에서 Root Context와 Servlet Context를 분리하여 관리.

6. 자동 빈 검색(Auto-detection of Bean Definitions)

  • ApplicationContext는 특정 패키지를 스캔하여 컴포넌트(@Component, @Service, @Repository, @Controller)를 자동으로 검색하고 빈으로 등록합니다.
  • BeanFactory는 이러한 자동 검색을 지원하지 않으며, 빈을 명시적으로 등록해야 합니다.

7. 데이터 액세스 통합

  • 트랜잭션 관리 및 데이터 접근 기능을 더 쉽게 통합할 수 있도록 지원합니다.
  • 예: PlatformTransactionManager와 같은 빈을 ApplicationContext에서 자동으로 관리.

8. 어드바이스 및 AOP 설정

  • Spring AOP 기능과 통합되어 어드바이스를 적용하고 애스펙트를 쉽게 관리할 수 있습니다.
  • 애플리케이션 전반에서 횡단 관심사를 처리하는 데 유용합니다.

9. WebApplicationContext

  • 웹 애플리케이션에 특화된 컨텍스트(WebApplicationContext)를 제공합니다.
  • Servlet과의 통합 및 웹 관련 빈 관리가 가능합니다.


ApplicationContextBeanFactory에 비해 대규모 엔터프라이즈 애플리케이션에서 필요한 다국어 지원, 이벤트 처리, 라이프사이클 관리, 환경 및 프로파일 관리, 자동 빈 검색 등의 기능을 추가로 제공합니다. 이러한 기능은 코드 유지보수성을 높이고, 확장성을 강화하며, 다양한 엔터프라이즈 요구사항을 충족하도록 설계되었습니다.

'Spring Framework > Spring IoC' 카테고리의 다른 글

Service Locator Pattern  (1) 2025.01.16
Spring IoC  (0) 2024.11.15
The BeanFactory API  (0) 2024.11.15
Additional Capabilities of the ApplicationContext  (0) 2024.11.15
Registering a LoadTimeWeaver  (0) 2024.11.15