스프링 컨테이너가 관리하는 자바 객체
빈을 생성하고 관리하는 컨테이너
@Configuration
싱글톤 보장(한 번만 등록). 빈이 등록되어 있으면 찾아서 반환해준다. 스프링 설정 정보로 인식하고, 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다. 클래스명에 지정해주며 @Bean 어노테이션과 함께 사용한다.
@Bean
개발자가 직접 제어가 불가능한 외부 라이브러리 또는 설정을 위한 클래스를 Bean으로 등록할 때 사용한다.
@Bean을 사용하는 클래스는 반드시 @Configuration을 지정해주어야 한다.
@Component
컴포넌트 스캔. 어노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다. 직접 개발한 클래스를 Bean으로 등록할 때 사용한다.
@Autowired : 의존관계 자동으로 주입
@Controller : 스프링 MVC 컨트롤러로 인식
@Repository : 스프링 데이터 접근 계층으로 인식하고, 데이터 계층의 예외를 스프링 예외로 변환해준다.
https://velog.io/@ehdrms2034/Spring-MVC-Application-Context.xml