본문으로 바로가기

IoC 컨테이너

category Java/java 2020. 10. 26. 23:14

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