
@Configuration안에서 @Bean이 빈으로 등록되는 과정
- 스프링 컨테이너는 @Configuration이 붙어있는 클래스를 자동으로 빈으로 등록하고 해당 클래스를 파싱하여 @Bean이 있는 메소드를 찾아서 빈을 생성해준다.
- @Component
- 수동으로 빈을 작업하면 빈으로 등록하는 클래스가 많아질수록 시간 소요가 커질 것이기 때문에 스프링에서는 특정 어노테이션이 있는 클래스를 찾아서 빈으로 등록해주는 기능을 제공한다.
- 스프링은 컴포넌트 스캔을 사용하여 @Component 어노테이션이 있는 클래스를 찾아 빈에 등록해준다.
- @Component를 가지고 있는 어노테이션도 있는데 @Configuration, @Controller, @Service, @Repository 등이 있다.
- 위에서도 @Configuration 안에 있는 @Component에 의해 설정 클래스 역시 자동으로 빈으로 등록이 되고, @Bean이 있는 메소드를 통해 빈을 등록해줄 수 있었던 것이다.
- 스프링은 기본적으로 컴포넌트 스캔을 이용한 자동 빈 등록 방식을 권장한다.
- @ComponentScan
- @Component 및 @Configuration, @Controller, @Service, @Repository 등의 어노테이션을 가진 클래스를 Scan하여 빈으로 등록해준다.
- @Import
- @Configuration으로 설정한 설정 파일이 두 개 이상 있을 때 사용
- @Configuration 어노테이션이 선언된 스프링 설정 클래스를 가져온다. @Import({설정클래스.class})와 같이 사용한다.
- 이를 사용하면 빈 선언 시 실행 순서도 보장되기 때문에 빈 선언 오류도 막을 수 있다.
- @Repository
- Spring에서 관리되는 객체임을 표시하기 위해 사용하는 기본적인 annotation인 Component 중 DB나 파일같은 외부 I/O 작업을 처리할 때 사용하는 어노테이션이다.
- DataBase에 접근하는 method를 가지고 있는 Dao Class에서 쓰인다.
- JSP
- @EnableWebMvc
- Spring Framework에서 여러 Config 값을 알아서 세팅해준다.
- 스프링 MVC 관련 빈(MessageSource, LocaleResolver 등)들을 자동으로 등록해준다.
- Controller, Model, View 등 MVC 구성 요소에 대한 설정이 포함한 DispatcherServlet 설정을 위한 기본 설정들이 활성화
- @EnableWebMvc를 사용하고 추가적인 설정이 필요할 경우 WebMvcConfigurer 인터페이스를 구현하여 기본 동작을 재정의하거나 확장할 수 있다.
- @Controller 어노테이션이 붙은 클래스를 찾아 요청을 처리합니다.
- JSP 등 클라이언트에게 보여줄 뷰를 선택하는 역할을 한다.
- @Controller
- 해당 클래스가 웹 요청을 처리하는 컨트롤러임을 Spring에게 알려준다.
- 컨트롤러의 메소드는 웹 요청을 처리한 후, 결과 데이터를 모델에 담아 뷰에 전달하거나 처리 결과를 표시할 뷰의 이름을 문자열로 반환하는 등의 일을 한다.
- Controller 클래스
- Controller 클래스는 클라이언트로부터 들어오는 요청을 처리한다.
- Controller 클래스 안에는 웹 요청에 대응하는 메소드들이 있으며, 이 메소드들은 @RequestMapping 또는 @GetMapping, @PostMapping 등의 어노테이션이 사용된다.