- 스프링 컨테이너를 통해 요청이 올 때마다 객체를 생성하는 것이 아니라, 이미 만들어진 객체를 공유해서 효율적으로 재사용할 수 있다.
싱글톤 방식의 주의점
- 싱글톤 객체는 상태를 유지(stateful)하게 설계하면 안된다
- 싱글톤 패턴, 스프링 같은 싱글톤 컨테이너든 객체 인스턴스를 하나만 생성해서 공유하는 싱글톤 방식은
여러 클라이언트가 하나의 같은 객체 인스턴스를 공유하기 때문이다.
- 싱글톤 패턴, 스프링 같은 싱글톤 컨테이너든 객체 인스턴스를 하나만 생성해서 공유하는 싱글톤 방식은
- 무상태(stateless)로 설계해야 한다
- 특정 클라이언트에 의존적인 필드가 있으면 안된다
- 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다
- 가급적 읽기만 가능해야 한다.
- 필드 대신에 자바에서 공유되지 않는, 지역변수, 파라미터, ThreadLocal 등을 사용해야 한다
@Configuration
- CGLIB 형식으로 반환한다
- 코드 생성 라이브러리로서 런타임에 동적으로 자바 클래스의 프록시를 생성해주는 기능을 제공한다.
- 인터페이스가 아닌 클래스에 대해서 동적 프록시를 생성할 수 있다.
- 내부 구현은 복잡하지만 이미 등록되어 있는 빈이면 가져오고 아니면 생성하는 형식으로 구현이 된다.
'Spring > Basic' 카테고리의 다른 글
[Basic] 의존관계 자동 주입 (0) | 2024.04.05 |
---|---|
[Basic] ComponentScan (0) | 2024.04.05 |
[Basic] 스프링 컨테이너 생성 과정 (0) | 2024.04.03 |
[Basic] Log 출력 (0) | 2024.04.03 |
[Basic] IoC, DI, 컨테이너 (0) | 2024.04.03 |