반응형
1.4 제어의 역전(IoC)
오브젝트 팩토리
UserDaoTest
- 기능이 잘 동작하는지 테스트 하는 책임
- 기존
UserDao
가 직접 담당하던 기능
팩토리(Factory)
- 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는
UserDao
와ConnectionMaker
는 각각 애플리케이션의 핵심적인 데이터 로직과 기술 로직 담당DaoFactory
는 이런 애플리케이션의 오브젝트들을 구성하고 관계를 정의하는 책임을 맡고 있음- DAO 여러개일 경우
public UserDao DaoFactory { public UserDao userDao() { return new UserDao(new DConnectionMaker()); } public AccountDao accountDao() { return new AccountDao(new DConnectionMaker()); } public MessageDao messageDao() { return new MessageDao(new DConnectionMaker()); } }
new DConnectionMaker()
의 중복public UserDao DaoFactory { public UserDao userDao() { return new UserDao(connectionMaker()); } public AccountDao accountDao() { return new AccountDao(connectionMaker()); } public MessageDao messageDao() { return new MessageDao(connectionMaker()); } public ConnectionMaker connectionMaker() { return new DConnectionMaker(); } }
제어권 이전을 통한 제어관계 역전
- 제어 흐름의 구조가 뒤바뀌는 것
- 일반적
- main() 메소드 시작지점 -> 오브젝트 생성 -> 관계 설정 -> 호출
- 제어의 역전
- 모든 제어권한을 자신이 아닌 다른 대상에 위임
- 모든 오브젝트가 위임받은 제어 권한을 갖는 특별한 오브젝트에 의해 결정되고 만들어짐
- 프레임워크 vs 라이브러리
스프링의 IoC
Bean(빈)
- 스프링이 IoC 방식으로 관리하는 오브젝트
- 스프링이 직접 제어권을 갖고 생성과 제어를 담당하는 오브젝트
Bean Factory(빈 팩토리)
- 스프링의 IoC를 담당하는 핵심 컨테이너
- 빈의 등록, 생성, 조회, 그 외 부가적인 빈을 관리하는 기능
Application Context(애플리케이션 컨텍스트)
- 빈 팩토리를 확장한 IoC 컨테이너
- 스프링이 제공하는 각종 부가 서비스 추가
- 애플리케이션 컨텍스트가 구현해야 하는 기본 인터페이스 지칭
반응형
'개인 공부 > 토비의 스프링 3.1' 카테고리의 다른 글
[토비의 스프링] 1.6 싱글톤 레지스트리와 오브젝트 스코프 (0) | 2021.07.21 |
---|---|
[토비의 스프링] 1.5 스프링의 IoC (0) | 2021.07.20 |
[토비의 스프링] 1.3 DAO의 확장 (0) | 2021.07.18 |
[토비의 스프링] 1.2 DAO의 분리 (0) | 2021.07.17 |
[토비의 스프링] 1.1 초난감 DAO (0) | 2021.07.13 |