이렇게 하며 객체를 만들어준다고?
아니, 미리 만들어준거 꺼내다 준다고
빈 (Bean)
스프링 IoC 컨테이너가 관리하는 객체
빈(Bean)을 등록하는 방법(Component Scanning)
1. 클래스 선언부 위에 @Component 어노테이션을 사용
@Controller, @Service, @Repository는 모두 @Component를 포함하고 있으며
해당 어노테이션으로 등록된 클래스들은 스프링 컨테이너에 의해 자동으로 생성되어 스프링 빈으로 등록됩니다.
2. 클래스에 @Configuration을 붙이고, 메소드를 만들어 @Bean 어노테이션을 붙여준다
메소드의 리턴 객체가 스프링 빈으로 등록됨 , 빈의 이름은 기본적으로 메소드의 이름
@Bean 어노테이션
메소드의 리턴 객체가 스프링 빈 객체임을 선언함
빈의 이름은 기본적으로 메소드의 이름
@Bean(name="name")으로 이름 변경 가능
@Scope를 통해 객체 생성을 조정할 수 있음
빈 객체에 init(), destroy() 등 라이프사이클 메소드를 추가한 다음 @Bean에서 지정할 수 있음
Bean의 사용
스프링 부트의 경우 @Component, @Service, @Controller, @Repository, @Bean, @Configuration 등으로
빈들을 등록하고 필요한 곳에서 @Autowired를 통해 의존성 주입을 받아 사용하는 것이 일반적입니다.
스프링 Bean의 LifeCycle
스프링 IoC 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입
→ 초기화 콜백 메소드 호출(의존관계 주입이 끝나면 호출) → 사용
→ 소멸 전 콜백 메소드 호출(메모리 반납, 연결 종료등) → 스프링 종료
즉, 스프링 빈은 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다.
스프링은 크게 3가지 방법으로 빈 생명주기 콜백을 관리한다.
1. 인터페이스( InitializingBean, DisposableBean )
2. 설정 정보에 초기화 메소드, 종료 메소드 지정
3. @PostConstruct, @PreDestroy 어노테이션 지원
콜백(call back)
주로 콜백함수를 부를 때 사용되는 용어
콜백함수를 등록하면 특정 이벤트가 발생했을 때 해당 메소드가 호출된다.
즉, 조건에 따라 실행될 수도 실행되지 않을 수도 있는 개념
'Spring' 카테고리의 다른 글
| Spring Boot와 Spring Framework의 차이점 (1) | 2022.10.24 |
|---|---|
| Lombok이 만드는 메소드들이 생성되는 시점 (1) | 2022.10.24 |
| IoC , DI , AOP (0) | 2022.10.24 |
| Spring Starter Project 구조 (0) | 2022.10.20 |
| Spring application context , 의존성 주입 , Auto-configuration (1) | 2022.10.20 |