build my life

[Spring] 스프링 컨테이너 본문

Spring

[Spring] 스프링 컨테이너

dalovee 2023. 6. 14. 18:03
728x90

스프링 컨테이너 생성

  • ApplicationContext = 스프링 컨테이너 = 인터페이스
  • xml로 만들 수 있고 어노테이션 기반 자바 설정 클래스(ex.AppConfig)로 만들 수 있음
// 스프링 컨테이너 생성
ApplicationContext ac = new AnnotationConfigApplicationContext(ExConfig.class);
  • 여기서 ExConfig.class가 스프링 컨테이너를 구성하는 구성 정보
  • 파라미터로 넘어온 구성 클래스 정보를 사용해서 스프링 빈 등록
  • 빈 이름은 직접 등록해서 사용할 수 있음(Default : 메서드이름)
  • 빈 이름은 항상 다른 이름을 부여해야함

예시

AppConfig

@Configuration
public class AppConfig {

    @Bean
    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }

@Configuration : 설정 클래스 파일에 붙이는 어노테이션, 자동으로 클래스를 빈으로 등록해줌
@Bean : 스프링 컨테이너에 빈으로 등록하는 어노테이션

@Bean을 사용하려면 @Configuration과 함께 사용해야지 싱글톤을 보장할 수 있다.

싱글톤(Singleton)

  • 여러 고객이 동시에 요청을 할 경우 객체가 요청에 따라 여러개 생성이 된다.
  • 객체가 여러개 생성이 되면 메모리 낭비가 심하다.
  • 해당 객체가 딱 1개만 생성되고 공유되도록 설계 => 싱글톤 패턴
728x90

'Spring' 카테고리의 다른 글

스코프와 프록시  (0) 2023.07.14
웹 스코프  (0) 2023.07.14
[Spring] 의존 관계 주입 방법  (0) 2023.06.14
[Spring] AppConfig를 통한 의존관계 주입  (0) 2023.06.02
[Spring Boot] Spring Initializr  (0) 2023.04.07