엔터프라이즈 관련 기능
2025. 1. 16. 16:38ㆍSpring 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과의 통합 및 웹 관련 빈 관리가 가능합니다.
ApplicationContext는 BeanFactory에 비해 대규모 엔터프라이즈 애플리케이션에서 필요한 다국어 지원, 이벤트 처리, 라이프사이클 관리, 환경 및 프로파일 관리, 자동 빈 검색 등의 기능을 추가로 제공합니다. 이러한 기능은 코드 유지보수성을 높이고, 확장성을 강화하며, 다양한 엔터프라이즈 요구사항을 충족하도록 설계되었습니다.
'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 |