IoC 컨테이너
: Inversion of Control - 제어 역전(의존성에 대한 컨트롤이 뒤바뀌다.)
: 일반적으로 프로그래밍을 작성할 때 프로그램이 흘러가는 흐름이나 생성되는 객체에 대한 제어권을 개발자가
만드는 개발자가 가지는 것과 달리 프레임워크가 가지는 것을 의미
: 개발자가 코드의 흐름이나 객체 생성에 관련된 코드를 프로그래밍 코드에 직접 작성하는 것이 아닌
프레임워크가 사용하는 파일에 작성하면 이를 토대로 프레임워크가 객체를 생성하여 반환하고 코드가
동작하는 순서를 결정하게 된다는 의미
: 빈(Bean)을 만들고 엮어주며 제공해준다.
- 빈 설정
ㆍ이름 또는 ID
ㆍ타입
ㆍ스코프
IoC 컨테이너의 종류
: BeanFactory
- 클래스를 통해 객체를 생성하고 이를 전달한다.
- 상속 등 객체 간의 관계를 형성하고 관리한다.
- Bean에 관련된 설정을 위한 xml 파일은 즉시 로딩하지만 객체는 개발자가 요구할 때 생성한다.
: ApplicationContext
- 클래스를 통해 객체를 생성하고 이를 전달한다.
- 상속 등 객체간의 관계를 형성하고 관리한다.
- 국제화 지원 등 문자열에 관련된 다양한 기능을 제공한다.
- 리스너로 등록되어 있는 Bean에 이벤트를 발생시킬 수 있다.
- Bean에 관련된 설정을 위한 xml 파일은 즉시 로딩하면서 객체를 미리 생성해서 가지고 있다.
패키지 내부 | BeanFactory | ClassPathResource XmlBeanFactory |
ApplicationContext | ClassPathXmlApplicationContext | |
패키지 외부 | BeanFactory | FileSystemResource XmlBeanFactory |
ApplicationContext | FileSystemXmlApplicationContext |
ApplicationContext (BeanFactory)
: 전혀 코드 어디에도 없다
: 코드를 동작하게 해준다
: 직접 볼일 없고, 직접 쓸 일이 없다. (하려면 할 순 있다.)
빈(Bean)
: 스프링 IoC 컨테이너가 관리하는 객체
빈(Bean) 등록하는 방법
: Component Scan
@Component
@Repository
@Service
@Controller
: 직접 일일이 xml이나 자바 설정파일에 등록
: @Autowired
- 애플리케이션 컨텍스트 안에 있는 빈들을 사용가능
의존성주입(Dependecy Injection)
: @Autowired/@Inject를 붙이는 곳
- 생성자 (이 클래스에 반드시 필요한 객체일 때, 그리고 생성자를 쓸 때 그 생성자가 단 하나면 생략 가능)
- 필드 (setter가 없다면 필드에)
- setter (setter가 있다면 setter에)
: 어떤 빈에 생성자가 오직 하나만 있고 그 생성자의 파라미터(매개변수)로 받는 타입에 빈이 존재한다면
@Autowired가 없더라도 주입을 해줌
'Java > java' 카테고리의 다른 글
[JMeter] 제이미터 설치 및 사용 (0) | 2023.05.24 |
---|---|
유효성 검사 (Validate) (0) | 2020.10.27 |
AOP (Aspect Oriented Programming) (0) | 2020.10.26 |
빈 xml 객체 생성 정리 (0) | 2020.10.21 |
스프링(Spring)의 특징과 의존성 주입(DI) (0) | 2020.10.20 |