meatplatform/job-description/interview-questions.adoc at master · sirloin-bondaero/meatplatform
설로인의 육류 플랫폼 서비스를 소개합니다! Contribute to sirloin-bondaero/meatplatform development by creating an account on GitHub.
github.com
깃허브에 설로인 기업에 대한 질문 리스트가 공개되어 있다..
읽어봤는데 선뜻 대답 못하는 것이 많았고 너무 어려워서 하나 씩 공부해나갈 예정이다..
질문 자체가 생각도 못한 부분이 많아서 알게 되는 게 너무 재밌어서 계속 도전해봐야겠다.
질문을 보면 보자마자 구름처럼 키워드들이 하나씩 떠오르긴 하는데 누군가에게 알아듣기 쉽고 매끄럽게 모든 걸
연결해서 설명하는 게 너무 어렵다 ㅠ
--할머니에게 java와 javascript 설명하는데.. 진짜 너무 어렵네--
그래도 뭔가 한번 씩 들어봐서..
하나씩 까보자
1.Spring boot가 stereotype annotation을 붙인 클래스들을 어떻게 찾고 bean으로 등록할까?
1. @SpringBootApplication가 붙은 클래스가 @ComponentScan를 포함하고 있어 하위 클래스를 탐색
2. 컴포넌트 스캔에서 stereotype 어노테이션이 붙은 클래스를 `BeanDefinition` 인스턴스로 변환되어 `ApplicationContext`에 등록
(stereotype 어노테이션은 service controller 등 내부적으로 componetScan을 가지고 있는 클래스)
3,빈 이름 생성
의존성 주입 준비
등록된 빈들의 의존성 관계를 분석하고, 의존성 주입을 위한 정보를 준비합니다. 스프링은 생성자 주입, 필드 주입, 세터 주입 등 다양한 방식의 의존성 주입을 지원합
-스프링 팀은 일반적으로 생성자 주입을 권장합니다
생성자가 여러 개인 경우에는 `@Autowired`로 사용할 생성자를 명시해야 합니다.
4. 빈 인스턴스 생성 및 초기화
애플리케이션 컨텍스트가 시작될 때, 등록된 `BeanDefinition`을 기반으로 실제 빈 인스턴스를 생성하고 초기화합니다:
-1. 빈 인스턴스 생성 (생성자 호출)
-2. 의존성 주입 수행
-3. 초기화 메서드 호출
-4. 빈 후처리기(BeanPostProcessor) 적용
-7. 순환 참조 감지
빈 생성 과정에서 순환 참조가 발견되면 오류를 발생시킵니다. 생성자 주입을 사용하면 순환 참조를 컴파일 타임에 감지할 수 있어 안전합니다.
자동 구성(Auto-Configuration)과의 관계
스프링 부트의 `@EnableAutoConfiguration`은 클래스패스에 있는 라이브러리들을 기반으로 필요한 빈들을 자동으로 구성합니다. 이는 컴포넌트 스캔과는 별개의 메커니즘이지만, 함께 작동하여 스프링 부트의 “작동 즉시 실행” 경험을 제공합니다.
`@SpringBootApplication`은 `@EnableAutoConfiguration`과 `@ComponentScan`을 모두 포함하고 있어, 두 가지 메커니즘이 함께 작동합니다.
스프링 부트의 이러한 컴포넌트 스캔 메커니즘은 개발자가 빈을 명시적으로 등록하지 않아도 자동으로 찾아 등록해주므로, 보일러플레이트 코드를 줄이고 개발 생산성을 향상시킵니다.