All Day Tired

스프링컨테이너, 스프링빈 등록/주입 본문

Back/Spring

스프링컨테이너, 스프링빈 등록/주입

yu.dev 2024. 12. 30. 22:17

기본 강의를 듣는데 참 신기하다 신기해...

왜이렇게 새로울까...

 

스프링 컨테이너

스프링 컨테이너는 스프링 서버 내부에 거대한 컨테이너(상자)

컨테이너 안에는 클래스들이 들어감

그리고 컨테이너 안에 들어간 클래스들은 스프링 빈이라고 부름

컨테이너로 클래스가 들어갈 때 이 들어가는 빈에 대한 다양한 정보들을 컨테이너가 저장하고 인스턴스화(쉽게 생각하자면 new를 해준다)도 함

 

아래와 같은 일이 일어나게 됨

 

스프링 빈 등록

스프링 빈을 등록하는 것은 크게 2가지로 생각할 수 있다.

1) @Service, @Repository 같은 어노테이션으로 스프링 빈을 등록

개발자가 직접 만든 클래스를 스프링 빈으로 등록할 때 보통 저런 어노테이션을 써서 등록하게 됨

2) @Configuration + @Bean 조합으로 스프링 빈을 등록

외부 라이브러리나 프레임워크에 만들어져 있는 클래스를 스프링 빈으로 등록할 때 주로 사용

사실 @Controller, @Service, @Repository, @Configuration 이런 어노테이션은 @Component를 상속 받아서 스프링 빈으로 등록될 수 있던 것이다.

그래서 컨트롤러도 아니고 서비스도 아니고 리포지터리도 아닌 클래스를 스프링 빈에 등록할 때 종종 @Component를 사용하기도 한다

 

스프링 빈 주입

빈은 등록했다면 주입하는 방법은 무엇...?

주입하는 방법은 크게 3가지로 볼 수 있다.

1) 생성자를 이용해 주입

@Repository
public class XXXRepository{
    private final JdbcTemplate jt;

    public XXXRepository(JdbcTemplate jt){
        this.jt = jt;
    }
}

2) setter 사용

@Repository
public class XXXRepository{
    private JdbcTemplate jt;

    @Autowired
    public void setJdbcTemplate(JdbcTemplate jt){
        this.jt = jt;
    }
}

3) @Autowired

@Repository
public class XXXRepository{
    @Autowired
    private JdbcTemplate jt;
}

'Back > Spring' 카테고리의 다른 글

@Configuration(feat.싱글톤)  (0) 2025.01.02
싱글톤, 싱글톤 컨테이너  (2) 2024.12.31
@Scheduler, cron표현식 사용  (0) 2024.10.27
스프링 빈 등록  (0) 2024.09.23
스프링에서 RestTemplate 예제  (0) 2024.08.20
Comments