Rubberduck-Debugging

[7일차] Spring IoC Container 본문

개발자/20181127 교육과정

[7일차] Spring IoC Container

P缶 2018. 12. 5. 16:50

* 제어역전IoC Container(Inversion of Control) : Bean Container + 의존객체 주입. 


engine(해석+실행), continer(생성소멸).    (자바스크립트-엔진, 스프링IoC-컨테이너)


BEAN container : object의 생성 소멸을 다루는 것.

DAO가 없으면 command가 실행안되므로, command는 dao의 의존객체다.


IOC의 예) 1. event listener (이벤트 :일하다 갑자기 화장실 가기?)

2. DI - Dependency Injection(의존성 주입)    (IoC contanier = DI COntainer = Bean COntaienr)


*DI의 장점 1. 의존객체의 대체가 쉽다(지불수단 -> 돈, 후불, 카드)

2. 단위테스트가 쉽다(과일 주스를 만들기 전에 야채주스로 테스트 가능. DAO- 과일, 커맨드-야채)

3. 가비지 최소화


spring ioc container 예제

https://github.com/eomjinyoung/java106/tree/master/java106-spring-ioc/src/main/java/bitcamp/java106



jquery 사용이유    

 1., 자바스크립트 아닌 제이쿼리 쓰면 크로스 브라우저 문제해결(크롬, 사파리...)    2. 코드가 간결해짐

자바스크립트 -> 제이쿼리

jdbc -> myBatis




** mybatis-config.xml을 javaConfig로 변경해서 사용해보자!



### Spring IoC Container 라이브러리 추가

- `mvnrepository.com`에서 `spring-context`를 검색하여 라이브러리 정보를 알아낸다.
- build.gradle 파일에 등록
- `$ gradle eclipse` 실행하여 이클립스 설정 파일을 갱신한다.
- 이클립스에서 프로젝트 리프래시한다.

### SQL SessionFActory 객체 생성

- apache common-dbcp 라이브러리 추가
-DataSource 구현체(DB 커넥션 풀 객체)
- AppConfig.java 작성
- DataSource 객체를 생성하는 메서드 추가

- SqlSessionFactory 객체를 생성하는 메서드 변경
MyBatis-Spring 연동 라이브러리에서 제공하는 도우미 클래스를 사용하여 SqlSessionFactory 객체를 만든다.
- TransactionManager 객체를 생성하는 메서드 추가

### Spring IoC 설정

- AppConfig.java 작성
- SqlSessionFactory 객체를 생성하는 메서드 추가
- Spring IoC 컨테이너가 자동으로 객체를 생성할 수 없는 경우 메서드를 정의하여 직접 객체를 생성한다.
- DAO나 Command의 경우 내가 정의한 것이라서 Spring IoC 컨테이너를 통해
객체를 자동생성되게 설정할 수 있다.
- 그러나 MyBatis 관련 객체인 경우 내가 만든 클래스가 아니라서
Spring IoC 컨테이너가 객체를 자동생성하게 설정할 수 없다.
- 따라서 MyBatis 관련 클래스는 직접 인스턴스를 생성해야 한다.
- DAO 클래스에 객체 자동생성하도록 설정
- 클래스 선언부에 @Component를 붙인다.
- Command 클래스에 객체 자동생성하도록 설정
- 클래스 선언부에 @Component를 붙인다.

### Spring IoC 컨테이너 준비

- App.java
- Spring IoC 컨테이너 객체를 준비한다.


servlet = server application let 


java EE