ㅅㅇ
[Spring Boot] 스프링 컨테이너, Bean 등록 및 사용하기 본문
1. 스프링 컨테이너 ApplicationContext
1. ApplicationConext
- 스프링 컨테이너
- BeanFactory 인터페이스의 하위 인터페이스. BeanFactory에서 부가기능(환경 변수 관련 처리, 애플리케이션 이벤트, 리소스 조회, 국제화 기능)을 추가한 것.
2. BeanFactory
- 스프링 컨테이너의 최상위 인터페이스
- 스프링 빈을 관리하고 조회하는 역할.
- BeanFactory, ApplicationContext를 구분해서 말하지만, AppicationContext 가 BeanFactory 의 모든 기능을 가지고 있기 때문에 BeanFactory를 직접적으로 사용하는 경우는 거의 없다.
3. 스프링 컨테이너의 특징 - 싱글톤 컨테이너
- 기본적으로 빈을 싱글톤으로 관리.
- bean 생성 시, 별다른 설정이 없다면, default 로 싱글톤이 적용됨.
- 스프링은 컨테이너를 통해 직접 싱글톤 객체를 생성하고 관리하는데, 요청이 들어올 때마다 매번 객체를 생성하지 않고 이미 만들어진 객체를 공유하기 때문에 효율적인 사용이 가능하다.
- 장점
- 싱글톤 패턴의 문제를 없앰.
- 싱글톤 코드 문제 (static 메소드, private 생성자 사용하지 않아, 객체 지향적 개발을 할 수 있음.)
- 구체 클래스에 의존, 유연성이 떨어짐 등
- 매번 인스턴스를 생성할 필요 없이 단 하나만을 생성하여 비용을 줄임.
- 테스트 하기 편함.
- 싱글톤 패턴의 문제를 없앰.
2. Bean 등록
1. @configuration, @bean 방식
@Configuration
public class SecurityConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
}
2. @component 방식
- @service, @controller, @repository 어노테이션은 @component안에 모두 속해있다.
- 따라서 Bean 으로 등록할 객체에 이 세 개 중 한 어노테이션를 붙이면 Bean으로 등록이 된다.
@Component
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
'SW_STUDY > SpringBoot' 카테고리의 다른 글
[Spring Boot, Java] Object ↔ JSON 문자열 : Gson (0) | 2023.03.08 |
---|---|
[Spring Boot, Java] Entity ↔ DTO 변환 : 자바 코드 매핑 & ModelMapper (0) | 2023.03.08 |
[Spring Securtiy] SpringSecurity 의 인증 및 인가 보안 처리 과정 (0) | 2023.03.08 |
[Spring Securtiy] Spring Securtiy FilterChain필터 (0) | 2023.03.08 |
[Spring Securtiy] Spring Securtiy 기본 개념 (0) | 2023.03.08 |