재 현
스프링 공부 정리 본문
공유를 목적으로 하는 것 아닌 개인 단순 정리 글입니다.
1. 환경설정
- Spring Boot ver 3.x.x -> java 17 설치 -> jdk와 sdk를 java 17로 설정
2. 왜 스프링인가?
수많은 프레임워크 중에 왜 스프링?
우리는 객체지향을 알 필요가 있다. 객체 지향 중 다형성의 원리를 지키고자 한다. 하지만 순수 자바로는 DIP, OCP를 지키면서 개발하기 쉽지 않다. 스프링이 그걸 쉽게 해준다. DI Container와 의존성 자동 주입을 해준다.
3. ApplicationContext
스프링 컨테이너이다. Bean으로 등록한 뒤 스프링은 이를 싱글톤으로 유지시켜준다. Bean은 중복되어선 안된다. @Configuration이란 annotation을 붙인 class에 Bean을 등록한다. 최종적으론 lombok의 RequiredAndConstructor를 사용하면 된다.
4. 중복
Bean은 중복이 있으면 터진다. 이를 피하기 위해 이름 바꾸기, @Qualifier, @Primary 등 다양한 방식이 있으므로 상황에 맞게 쓴다.
5. 빈 생성 주기
스프링 컨테이너 생성 -> 빈 생성 -> 의존 관계 주입 -> 콜백 -> 사용 -> 콜백 -> 종료
이 순으로 주기가 돌아가고, 빈 생성 후와 소멸 전에 함수를 쓰고 싶으면 @PostConstruct와 @PreDestroy 어노테이션을 붙이면 된다.
6. 빈 스코프
Prototype은 요청마다 새로 생성(스프링이 초기화까지해줌), Singleton class(스프링 끝날때까지)가 Prototype을 가지고 있으면 의존관계 주입 시 생성해놓고 가져오기 때문에 같은 값 반환, -> Provider로 매번 생성해서 가져오기
7. 프록시
요청 들어오기 전까지 가짜 프록시로 버티기
'Java > Spring' 카테고리의 다른 글
Spring Test id 값 증가 (0) | 2023.10.16 |
---|---|
스프링 공부 정리 2 (0) | 2023.08.23 |
[Spring] org.springframework.validation.BindException 오류 (0) | 2021.11.03 |
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported 오류 (0) | 2021.11.03 |
생성자 주입을 해야 하는 이유 (0) | 2021.09.06 |