> For the complete documentation index, see [llms.txt](https://jinwon-yoon.gitbook.io/jinonys-blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jinwon-yoon.gitbook.io/jinonys-blog/daily-log/2022.12.01.md).

# 2022.12.01

일일 회고 106일차

## 할일 및 한일&#x20;

* [ ] 자료구조 2단원 공부 및 정리&#x20;
* [x] 스프링 강의 수강 및 정리&#x20;
* [x] 네트워크 시험 대비 문제 정독&#x20;

## 경험 및 배움&#x20;

오늘은 스프링 강의를 수강하고, 네트워크 시험 대비 문제를 정독하였다. 몸 상태가 계속 좋지 않아 목표한 공부는 다 하지 못하였다.

### 스프링 강의 수강 및 정리&#x20;

스프링에서 싱글톤은 매우 중요하다. 하지만 어떻게 싱글톤을 스프링이 유지를 시켜주나 궁금하였는데, 오늘 그 궁금증이 해소되었다.

<figure><img src="https://554097319-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXOFWKNTyvL7RYCd4zX33%2Fuploads%2FTvQQeNdKKksS5LyxhNSI%2Fimage.png?alt=media&amp;token=133dc471-9241-4f9f-a14d-0ab975c0ab00" alt=""><figcaption></figcaption></figure>

위의 사진과 같은 **CGLIB** 라는 라이브러리가 설정 정보 클래스를 상속받는 임의의 클래스를 만들고, 그 다른 클래스를 스프링 빈으로 등록한다고 한다. 또한 `@Bean` 이 붙은 메서드마다 이미 스프링 빈이 존재하면 존재하는 빈을 반환하고, 스프링 빈이 없으면 생성해서 스프링 빈으로 등록하고 반환하는 코드가 동적으로 만들어진다.

또한 **`@Bean` 을 사용하지 않고, 컴포넌트 스캔 방식을 사용하여 자동으로 스프링 빈을 등록하고, `@Autowired` 를 사용해서 의존 관계 주입을 해주는 방법**에 대해 학습하였다.

등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고, 누락하는 문제도 발생하므로 이 방법을 쓰는 것이 좋다고 한다.

쉽게 설명하면 **설정 정보 클래스에 `@Configuration` 과 `@ComponentScan` 어노테이션을 붙이고, 스프링 빈으로 등록하고 싶은 클래스에 `@Component` 어노테이션과, 생성자에 `@Autowired` 어노테이션을 붙이면 스프링 빈 등록과 자동으로 의존 관계 주입까지 완료**된다!

## 개선 및 목표&#x20;

* 내일은 자바 세미나가 있는 날이니, 오전 수업이 끝난 후 모바일 프로그래밍 보고서 작성과 자바 복습을 완료한 후 저녁에는 스프링 및 시험 대비를 해야겠다.&#x20;
