- Bean(빈)
- 스프링 빈은 Spring이 관리하는 싱글톤 객체를 의미
- Spring에서 빈(Bean)은 Spring IoC(Inversion of Control) 컨테이너가 인스턴스화, 관리, 구성하는 객체. 즉, Spring에 의해 싱글톤으로 생성되고 관리되는 객체를 빈이라 일컬음
- Bean이 되기 위한 스프링 주요 어노테이션
- @Component, @Service, @Repository, @Controller, @Bean 등
- IoC(Inversion of Control)의 주요개념
- IoC는 "제어의 역전이라 번역. 이 개념은 객체의 생성과 생명 주기 관리를 개발자가 아닌 프레임워크가 담당한다는 것을 의미
- IoC의 주요 개념
- IOC컨테이너는 객체의 생명주기와 의존성을 관리하는 컨테이너. 객체 생성, 의존성 주입, 생명주기 관리 등을 자동으로 처리
- 스프링 컨텍스트(Spring Context) 또는 애플리케이션 컨텍스트(Application Context)
- IoC 컨테이너의 더 확장된 형태로, 스프링 애플리케이션에서 사용되는 모든 객체(빈)를 담고 있는 컨테이너
- IoC 컨테이너의 기능인 객체생성과 의존성 관리외에 AOP 지원, 이벤트 발행, 리소스 관리 등 스프링 프레임워크의 다양한 기능을 제공
- 리플렉션
- 리플렉션은 런타임환경에서 프로그램이 자신의 구조를 분석하고 조작할 수 있는 기능
- Java에서 리플렉션은 런타임에 클래스, 인터페이스, 필드, 메소드 등에 대한 정보를 검색하고, 이들을 런타임에 동적으로 조작할 수 있는 방법을 제공
- IoC 컨테이너는 리플렉션을 사용하여 런타임에 클래스의 메타데이터를 읽고, 객체를 동적으로 생성하며, 의존성을 주입
- 예시)@Autowired나 @Component 어노테이션이 붙은 클래스와 메소드를 찾고, 이를 기반으로 객체를 생성하고 의존성을 주입하는 과정에서 리플렉션이 사용
- 리플렉션(Reflection)은 스프링의 근간이 되는 기술로서 리플렉션을 기반으로 한 다양한 기능들을 제공
- 리플렉션의 주요 기능
- 어노테이션 처리
- 클래스, 메소드, 필드에 적용된 어노테이션 정보를 읽고 처리
- 예시)
- @RequestMapping, @GetMapping 등의 어노테이션을 확인후 url매핑
- @Autowired를 확인후 생성자 주입
- 클래스 정보 검색
- 리플렉션을 사용하여 어떤 객체의 클래스 이름, 상위 클래스, 구현된 인터페이스 등을 검색
- 필드와 메소드 접근
- 객체의 private, protected, public 필드나 메소드에 접근하고, 이들의 값을 읽거나 수정
- 동적 객체 생성
- 클래스 이름만 알고 있을 때, 그 클래스의 인스턴스를 동적으로 생성