[3-1] Spring DI 흉내내기(1)
1-1. 변경에 유리한 코드(1) - 다형성, factory method
1-2. 변경에 유리한 코드(2) - Map과 외부파일
[3-2] Spring DI 흉내내기(2)
[3-3] Spring DI 흉내내기(2)
[3-4] Spring DI 활용하기 - 실습
[3-5] Spring DI 활용하기 - 이론
[3-6] Spring DI 활용하기 - 이론
[3-7] Spring DI 활용하기 - 이론
6 . IoC와 DI
- 제어의 역전 IoC : 제어의 흐름을 전통적인 방식과 다르게 뒤바꾸는 것 -> 코드 호출 방향이 바뀜
- 의존성 주입 DI : 사용할 객체를 외부에서 주입받는 것
6 . 스프링 애너테이션 @Autowired
- 인스턴스 변수(iv), setter 참조형 매개변수를 가진 생성자, 메서드에 적용
- 생성자가 한 개 일때는 생략가능
- Spring container에서 타입으로 빈을 검색해서 참조 변수에 자동 주입(DI)
- 검색된 빈이 n개이면, 그 중에 참조변수와 이름이 일치하는 것을 주입
- 주입 대상이 변수 일 때, 검색된 빈이 1개가 아니면 예외 발생
- 주입 대상이 배열 일 때, 검색된 빈이 n개라도 예외 발생x
* @Autowired(required=false)일 때, 주입할 빈을 못찾아도 예외 발생x
[3-8] Spring DI 활용하기 - 이론
6 . 스프링 애너테이션 @Resource
- Spring container에서 이름으로 빈을 검색해서 참조 변수에 자동 주입(DI). 일치하는 이름의 빈이 없으면, 예외 발생
- < component-scan>로 @Component가 클래스를 자동 검색해서 빈으로 등록
6 . 스프링 애너테이션 @Value와 @ProperySource
7 . 스프링 애너테이션 vs 표준 애너테이션(JSR-330)
8 . 빈의 초기화 : < property>와 setter
- < property>를 이용한 빈의 초기화. setter를 이용
- < constructor-arg>를 이용한 빈 초기화. 생성자를 이용
[3-15] DAO의 작성과 적용(1)
[3-17] Transaction, Commit, Rollback
Transaction이란?
- 더 이상 나눌 수 없는 작업의 단위
- 계좌 이체의 경우, 출금과 입금이 하나의 Tx로 묶여야 됨
Transaction의 속성 -ACID
원자성(Atomicity) : 나눌 수 없는 하나의 작업으로 다워져야 한다.
일관성(Consistency) : Tx 수행 전과 후가 일관된 상태를 유지해야 한다.
고립성(Isolation) : 각 Tx는 독립적으로 수행되어야 한다.
영속성(Durability) : 성공한 Tx의 결과는 유지되어야 한다.
커밋(commit)과 롤백(rollback)
- 커밋(commit) : 작업 내용을 DB에 영구적으로 저장
- 롤백(rollback) : 최근 변경사항을 취소(마지막 커밋으로 복귀)
자동 커밋과 수동 커밋
- 자동 커밋 : 명령 실행 후, 자동으로 커밋이 수행(rollback불가)
- 수동 커밋 : 명령 실행 후, 명시적으로 commit 또는 rollback을 입력
Tx의 isolation level
READ UNCOMMITED : 커밋되지 않은 데이터도 읽기 가능
READ COMMITED : 커밋된 데이터만 읽기 가능
REPEATABLE READ : Tx이 시작된 이후 변경은 무시됨 (default)
SERIALIZABLE : 한 번에 하나의 Tx만 독립적으로 수행
[3-18] AOP의 개념과 용어
공통 코드의 분리
코드를 자동으로 추가한다면, 어디에? -> 맨앞 혹은 맨뒤 혹은 둘다
AOP(Aspect Oriented Programming)란?
- 관점 지향 프로그래밍. 횡단 관심사. cross-cutting concerns
- 부가 기능(advice)을 동적으로 추가해주는 기술
- 메서드의 시작 또는 끝에 자동으로 코드(advice)를 추가
AOP 관련 용어
Advice의 종류
- Advice의 설정은 XML과 애너테이션, 두 가지 방법으로 가능
pointcut expression
- advice가 추가될 메서드를 지정하기 위한 패턴
- execution(반환타입 패키지명. 클래스명. 메서드명(매개변수 목록))
[2-19 ~ 2-21] 서비스 계층의 분리와 @Transactional(1)