토비의 스프링 [1.4장 - 1.5장] 발표 스터디 자료

1.4. 제어의 역전(IoC, Inversion of Control)

Object Factory

- 기존에 있던 Dao를 한데 모아 한꺼번에 관리하는 전략, 코드 중복의 최소화

Factory

- 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 것
import me.devsign.toby.connection.ConnectionMaker;

public class DaoFactory {
    private ConnectionMaker connectionMaker;

    public DaoFactory(ConnectionMaker connectionMaker) {
        this.connectionMaker = connectionMaker;
    }

    public UserDao userDao() {
        return new UserDao(connectionMaker);
    }
    public AccountDao accountDao() {
        return new AccountDao(connectionMaker);
    }
    public MessageDao messageDao() {
        return new MessageDao(connectionMaker);
    }
}

1.5. 스프링의 IoC

1.5.1. 오브젝트 팩토리를 이용한 스프링 IoC

애플리케이션 컨텍스트와 설정정보

스프링 빈
스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트
오브젝트 단위의 애플리케이션 컴포넌트

빈 팩토리 == 애플리케이션 컨텍스트
빈 팩토리가 스프링 빈의 생성 관계설정, 사용 등을 제어해준다. (제어의 역전)
빈 팩토리: IoC의 기본 기능에 초점
애플리케이션 컨텍스트: 범용적인 IoC 엔진 같은 역할을 수행

@Configuration

- 애플리케이션 컨텍스트 또는 빈 팩토리가 사용할 설정정보라는 표시

@Bean

- 오브젝트 생성을 담당하는 IoC용 멤버 변수, 메소드 등이 될 수 있다.

1.5.2. 애플리케이션 컨텍스트의 동작방식

애플리케이션 컨텍스트의 장점

- 클라이언트는 구체적인 팩토리 클래스를 알 필요가 없다.
	- 애플리케이션 발전 -> DaoFactory같은 IoC를 적용한 오브젝트 점차 추가되어 사용에 번거로움이 있음 -> 애플리케이션 컨텍스트를 사용하면 새로운 오브젝트 팩토리를 인지하거나 직접 생성하는 번거로움 없어짐.
	- 즉, 일관된 방식으로 원하는 오브젝트를 가져올 수 있다.
- 애플리케이션 컨텍스트는 종합 IoC 서비스를 제공해준다.
	- 단지 오브젝트 생성과 다른 오브젝트와의 관계설정만이 전부가 아님.
	- 오브젝트가 만들어지는 방식, 시점과 전략을 유연하게 가져갈 수 있음.
- 애플리케이션 컨텍스트는 빈을 검색하는 다양한 방법을 제공한다.
	- getBean(): 빈의 이름을 이용해 빈을 찾아준다.
	- 타입만으로 빈을 검색 or 어노테이션 설정이 되어 있는 빈을 찾을 수 있다.

좋은 웹페이지 즐겨찾기