스프링 3

Mango·2022년 3월 29일
0

Spring

목록 보기
3/7

[3-1] Spring DI 흉내내기(1)

1-1. 변경에 유리한 코드(1) - 다형성, factory method
1-2. 변경에 유리한 코드(2) - Map과 외부파일

[3-2] Spring DI 흉내내기(2)

  1. 객체 컨테이너(ApplicationContext)만들기
  2. 자동 객체 등록하기 - Component Scanning
  3. 객체 찾기 - by Name, by Type
  4. 객체를 자동 연결하기(1) - @Autowired (by Type)
  5. 객체를 자동 연결하기(2) - @Resource (by Name)

[3-3] Spring DI 흉내내기(2)

[3-4] Spring DI 활용하기 - 실습

[3-5] Spring DI 활용하기 - 이론

  1. 빈(bean)이란?
    - JavaBeans - 재사용 가능한 컴포넌트, 상태(iv), getter&setter, no-args constructor
    - Servlet & JSP bean : MVC의 Model, EL, scope, JSP container가 관리
  2. BeanFactory와 ApplicationContext
    - Bean : Spring container가 관리하는 객체
    - Spring container : Bean저장소, Bean을 저장, 관리(생성, 소멸, 연결)
    ① BeanFactory : Bean을 생성, 연결 등의 기본 기능을 정의해놓은 인터페이스
    ② ApplicationContext : BeanFactory를 확장해서 여러 기능을 추가 정의(①번을 확장)
  3. ApplicationContext의 종류
    - 다양한 종류의 ApplicationContext구현체를 제공
  4. Root AC와 Servlet Ac

[3-6] Spring DI 활용하기 - 이론

  1. ApplicationContext의 주요 메서드

[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)

  1. DAO(Data Access Object)란?
    - 데이터(data)에 접근(access)하기 위한 객체(object)
    - Database에 저장된 데이터를 읽기, 쓰기, 삭제, 변경을 수행
    - DB테이블당 하나의 DAO를 작성
  2. 계층(layer)의 분리

[3-17] Transaction, Commit, Rollback

  1. Transaction이란?
    - 더 이상 나눌 수 없는 작업의 단위
    - 계좌 이체의 경우, 출금과 입금이 하나의 Tx로 묶여야 됨

  2. Transaction의 속성 -ACID

    원자성(Atomicity) : 나눌 수 없는 하나의 작업으로 다워져야 한다.
    일관성(Consistency) : Tx 수행 전과 후가 일관된 상태를 유지해야 한다.
    고립성(Isolation) : 각 Tx는 독립적으로 수행되어야 한다.
    영속성(Durability) : 성공한 Tx의 결과는 유지되어야 한다.

  3. 커밋(commit)과 롤백(rollback)
    - 커밋(commit) : 작업 내용을 DB에 영구적으로 저장
    - 롤백(rollback) : 최근 변경사항을 취소(마지막 커밋으로 복귀)

  4. 자동 커밋과 수동 커밋
    - 자동 커밋 : 명령 실행 후, 자동으로 커밋이 수행(rollback불가)
    - 수동 커밋 : 명령 실행 후, 명시적으로 commit 또는 rollback을 입력

  5. Tx의 isolation level

    READ UNCOMMITED : 커밋되지 않은 데이터도 읽기 가능
    READ COMMITED : 커밋된 데이터만 읽기 가능
    REPEATABLE READ : Tx이 시작된 이후 변경은 무시됨 (default)
    SERIALIZABLE : 한 번에 하나의 Tx만 독립적으로 수행

[3-18] AOP의 개념과 용어

  1. 공통 코드의 분리

  2. 코드를 자동으로 추가한다면, 어디에? -> 맨앞 혹은 맨뒤 혹은 둘다

  3. AOP(Aspect Oriented Programming)란?
    - 관점 지향 프로그래밍. 횡단 관심사. cross-cutting concerns
    - 부가 기능(advice)을 동적으로 추가해주는 기술
    - 메서드의 시작 또는 끝에 자동으로 코드(advice)를 추가

  4. AOP 관련 용어

  5. Advice의 종류
    - Advice의 설정은 XML과 애너테이션, 두 가지 방법으로 가능

  6. pointcut expression
    - advice가 추가될 메서드를 지정하기 위한 패턴
    - execution(반환타입 패키지명. 클래스명. 메서드명(매개변수 목록))

[2-19 ~ 2-21] 서비스 계층의 분리와 @Transactional(1)

  1. 서비스 계층(Layer)의 분리 - 비즈니스 로직의 분리
  2. TransactionManager란?
    - DAO의 각 메서드는 개별 Connection을 사용
    - Tx는 한대의 Connection에서 이루어져야 한다
    - TransactionManager는 같은 Tx내에서 같은 Connection을 사용할 수 있게 관리
    - DAO에서 Connection을 얻거나 반환할 때 DataSourceUtils를 사용해야
  3. TransactionManager로 Transaction 적용하기
  4. @Transactional로 Transaction 적용하기
    - AOP를 이용한 핵심 기능과 부가 기능의 분리
    - @Transactional은 클래스나 인터페이스에도 붙일 수 있음
  5. @Transactional의 속성
  6. propagarion속성의 값
  7. REQUIRED와 REQUIRES_NEW
    (1) - REQUIRED
    (2) - REQUIRED-NEW
profile
How u do that

0개의 댓글

관련 채용 정보