본문 바로가기
부트캠프

[TIL] 유데미 X 사람인 취업 부트캠프 27일차 / java, spring

by 상똥 2024. 1. 22.

[1. 오늘 배운 것]

1. 오늘 배우게 될 것들

- spring container

- spring context

- ioc container

- application context

- java bean v spring bean

- 일치하는 빈이 여러개라면?

 

2. 스프링 컨테이너(컨텍스트, ioc 컨테이너)

- 스프링 빈 및 빈의 수명 주기를 관리하는 컨테이너

- 준비된 시스템을 출력

- JVM내부에는 우리가 구성한 모든 빈을 관리하는 스프링 컨텍스트가 있음

- 자바 클래스를 만들고 구성을 만들면, ioc 컨테이너가 런타임 시스템을 만듦

 

3. java bean vs pojo vs spring bean

- POJO : 오래된 방식의 간단한 자바 오브젝트 (Plain Old Java Object)

- 자바 빈 제약조건 :  public-no-arg 생성자를 가짐 / getters, setters필요 / 직렬화 가능

- Spring Bean : spring이 IOC 컨테이너를 사용하여 빈을 관리 

 

4. 스프링 프레임워크 자동 빈 와이어링 - Primary 및 Qualifier 어노테이션

- 메소드 매개변수를 자동 와이어링하거나 스프링 컨텍스트에서 개체를 가져오려 할 때 일치하는 빈이 여러 개 있는 경우 그것들을 후보라고 함

- 빈이 여러개 일치하는 후보가 있는 경우, spring은 예외를 던짐

- @Primary를 통해 예외처리 : 가장 중요한 것을 나타냄

- @Qualifier : 어떤 빈을 주입할지에 대한 설정

 

5. 스프링 프레임워크를 통한 객체 생성과 관리

- @Component : 어노테이션 기바 설정돠 클래스패스 등을 통해 자동 감지됨

- @Component가 두 개일 경우, Primary를 통해 특정한 빈을 선택하게 하여 해결

- @Qualifier : 자동 와이어링될 객체를 지정해줌

 

6. primary vs qualifier

- @Primary : 다수의 빈이 후보군에 속할 경우 부여하는 속성

- @Qualifier: 자동 와이어링될 특정 빈에 부여

 

7. 스프링 프레임워크 - 의존성 주입

- 생성자 기반 방식 / Setter기반 방식 / Feild기반 방식

- 생성자 기반 방식 : 생성자를 통해 의존 관계를 주입하는 방법 / 생성자의 호출 시점에 1회 호출되는 것이 보장됨

- Setter 기반 방식 : 주입받는 객체가 변경될 가능성이 있는 경우 사용

 

8. @Component vs @Bean

- @Component : 자동으로 스프링 컨테이너에 빈을 등록하는 기능

- @Bean : 수동으로 스프링 컨테이너에 빈을 등록

 

9. 지연 초기화와 이른 초기화

- 지연초기화 : 객체를 실제로 필요할 때까지 생성 또는 초기화를 미루는 기술, 애플리케이션이 시작될 때 모든 리소스를 미리 로드하거나 초기화하지 않고 해당 리소스가 필요한 시점에 초기화하여 성능을 향상

- 이른초기화 : 객체를 가능한 빨리 생성하거나 초기화하는 것을 의미, 애플리케이션이 시작될 때 필요한 모든 객체를 미리 생성하거나 초기화하여, 애플리케이션이 실행 중에 필요한 시점에 해당 객체를 사용할 수 있도록 함

 

10. 프로토타입 싱글톤

- 프로토타입 : 객체를 생성할 때마다 새로운 인스턴스를 만드는 디자인 패턴, 각각의 객체는 서로 독립적이고, 상태를 공유하지 않음

- 싱글톤 : 어플리케이션 전역에서 단일 객체의 인스턴스를 유지하는 디자인 패턴, 객체의 인스턴스가 하나만 생성되고, 이를 공유하여 사용, 전역 상태를 관리하거나, 공통된 리소스에 대한 중앙 집중적인 접근을 위해 사용

 

11. @PostConstruct, @PreDestroy 

스프링 프레임워크에서 사용되는 어노테이션으로, 빈의 초기화와 소멸 시점을 지정할 때 사용

- @PostConstruct : 해당 빈의 초기화 단계에서 호출, 스프링 컨테이너가 빈을 생성한 후, 의존성 주입이 완료된 다음에 실행, 주로 초기화 로직을 수행하는 데 사용

- @PreDestroy : 해당 빈의 소멸 단계에서 호출, 스프링 컨테이너가 종료되기 전에 빈이 소멸되기 전에 실행, 주로 리소스를 정리하거나 종료 작업을 수행하는 데 사용

 

12. 스프링 스테레오타입 어노테이션

- @Component : 제네릭 어노테이션으로 모든 클래스에 적용 가능

- @Service : 어노테이션된 클래스가 비즈니스 클래스를 가지고 있음을 가리킴, 비즈니스 로직을 가지고 있다면 @Component 대신 사용 가능

- @Controller : 웹 애플리케이션과 REST API에서 컨트롤러를 정의하는데 쓰임

- @Repository : 빈이 데이터베이스에 데이터 저장이나 데이터 검색, 데이터 조작 등을 요청하는 경우에 쓰임

 

[2. 회고]

스프링을 처음 배웠을 때에는 아주 많이 어렵고 무슨 소리인가 싶었는데, 자바를 다시 듣고 또 스프링 강의를 다시 들으니 이해가 드디어 가기 시작했다 ㅜㅜ 어노테이션.. 너희 그런 의미였구나,,, 

오늘부터는 팀스터디가 없기 때문에 계속 인강듣고 복습하는 시간을 가질 수 있었다. 그러다뵈 좀 쳐질때도 있어서 페이스 관리를 잘 해야겠다는 생각이 든다. 

시험이 코 앞으로 다가왔다!!! 오늘부터 그동안 쓴 TIL을 한번씩 읽고 집에 가야겠다. 아침에 일찍와서 자바스크립트 읽고 저녁에는 TIL을 읽어야겠다 계획적으로 살자!!!!!!!!!