Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- Perceptron Convergence theorem
- CH01
- 5397번
- Fisher discriminant analysis
- undirected graphical model
- vector미분
- 2018
- 자바ORM표준JPA프로그래밍
- 스터디
- 이것이 MySQL이다
- chapter02
- 알고리즘대회
- 선형분류
- MySQL
- graphical models
- 알고리즘
- Numerical optimization
- falsePosition
- 델타 rule
- 선형판별분석
- 근구하기
- SCPC
- 개발순서
- 1차예선
- chapter01
- secant
- bisection
- directed graphical model
- 로지스틱 회귀
- 인공지능
Archives
- Today
- Total
computer_study
[Spring] 06. 빈 라이프사이클과 범위 본문
목차
1. 컨테이너 초기화와 종료
2. 스프링 빈 객체의 라이프사이클
3. 빈 객체의 생성과 관리 범위
1. 컨테이너 초기화와 종료
스프링 컨테이너는 초기화와 종료라는 라이프 사이클을 갖는다.
- 컨테이너 초기화 -> 빈 객체 생성, 의존 주입, 초기화
- 컨테이너 종료 -> 빈 객체의 소멸
2. 스프링 빈 객체의 라이프사이클
스프링 컨테이너는 빈 객체의 라이프사이클을 관리하기에, 빈 객체도 생성과 소멸의 라이프 사이클을 갖는다.
객체 생성 -> 의존 설정 -> 초기화 -> 소멸
- 스프링 인터페이스
- InitializingBean
- 스프링에서 정의한 초기화 인터페이스
- afterPropertiesSet() 메소드를 가지고있다.
- DisposableBean
- 스프링에서 정의한 소멸 인터페이스
- destroy() 메소드를 가지고있다.
- InitializingBean
- 커스텀 메서드
- 직접 구현하지 않은 코드 등의 사유로 InitializingBean 인터페이스와 Disposable Bean 인터페이스를 구현할 수 없는 경우 혹은 두 인터페이스를 사용하고 싶지 않은 경우 메서드를 지정하여 사용
- @Bean 태그에 initMethod 속성과 destroyMethod 속성을 사용해서 초기화, 소멸 메서드의 이름을 지정할 수 있다.
- 초기화 메서드가 두 번 불리지 않도록 주의해야 한다.
@Bean(initMethod = "connect", destroyMethod = "close")
public Client2 client2(){
Client2 client = new Client2();
client.setHost("host");
return client;
}
//// client2.java//
package spring;
public class Client2{
private String host;
public void setHost(String host){
this.host = host;
}
public void connect(){
/// 먼저 실행됨
}
public void send(){
}
public void close(){
/// 소멸 시 실행됨
}
}
3. 빈 객체의 생성과 관리 범위
한 식별자에 대해 한 개의 객체만 존재하는 빈을 싱글톤 범위를 갖는다고 한다.
빈의 범위가 프로토타입이라면 메서드는 매번 새로운 객체를 생성해서 리턴해준다.
@Bean
@Scope("prototype")
public Client client(){
Client client = new Client();
client.setHost("host");
return client;
}
// 싱글톤으로 지정하고 싶다면
@Scope("singleton")
// 아니면 default가 싱글톤이기에 작성하지 않는다.
프로토 타입을 사용하면, 컨테이너를 종료한다고 생성한 빈 객체가 소멸하지 않으므로, 코드에서 직접 빈 객체 소멸 처리를 해주어야 한다.
'스터디 > 스프링5 프로그래밍 입문' 카테고리의 다른 글
[Spring] 08. DB연동 (0) | 2022.04.24 |
---|---|
[Spring] 07. AOP 프로그래밍 (0) | 2022.04.18 |
[Spring] 05. 컴포넌트 스캔 (0) | 2022.04.09 |
[Spring] 04. 의존 자동 주입 (0) | 2022.04.09 |
[Spring] 03. 스프링 DI (0) | 2022.03.31 |
Comments