능글맞은 구렁이
Spring-DI/AOP정리! 본문
1. IoC :DI의 설정 방법
1) xml
장점: 소스를수정하지 않아도 된다.
단점: xml 기반이기 때문에 xml문서에 대한 부담이있다.
2) annotation
장점: 소스 코드에 어떤 역할을 담당하고 언제 주입되는지 적혀있기 때문에 분석이 편리하다.
단점: 변경사항이 발생했을 경우, 소스코드를 수정해야 한다.
3) xml과 annotation혼용 시
annotation : 변경이 이루어지지 않는곳
xml : 수시로 변경이 이루어질 거라 예상되는 곳
특히, 외부라이브러리가 제공하는 클래스는 반드시 xml로 등록해야한다.
2. AOP
1)AOP란? 요청사항에 따른 처리 부분에서각 요청처리 메서드들이공통적으로 사용하는 부분을 추출하여 AOP를 적용
특히 트랜젹션을 적용할 경우에는 반드시 필요하다.
2)AOP용어
ㄱ) Advice : 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의하고 있다. 메서드를 호출하기
전/후에 공통 기능을 적용한다는 것을 정의.
ㄴ) Weaving : Advice를 핵심 로직 코드에 적용하는 것을 말한다.
ㄷ) Jointpoint : Advice를 적용 가능한 지점을 의미한다. 메서드 호출, 필드 값 변경 등이 Jointpoint 에 해당.
ㄹ) Pointcut : Jointpoint 의 부분 집합으로 실제로 Advice가 적용되는 Jointpoint 를 나타낸다.
스프링에서는 정규표현식이나 AspectJ 문법을 이용하여 정의.
ㅁ) Aspect : 여러 객체에 공통으로 적용되는 기능을 Aspect라고 한다. 트랜잭션이나 보안 등이 Aspect의 좋은 예.
3)AOP도 XML기반으로 사용할 수 도 있고 annotation으로 사용할 수 있다.
3. AOP를 이용한 트랜젹션 처리방법
1) 트랜젹션이란? 일종의 RollBack, commit과 같은 기능을 요청처리메서드에서 적용하고 싶을 경우사용!
대표적인 예 : 데이터베이스의 insert/update/delete (즉, 영구적인 데이터에 대한 수정 및 추가 삭제가 일어나는 곳)
예를 들어 어떤 ¹인터넷을 통하여 검색한 후 , ²해당 데이터에 대한 정제(필요한 데이터만 추출)하고, ³그 결과
데이터들을 오라클 데이터베이스에 저장하여 영구보존하고 싶을 경우
2) 실행 흐름
ㄱ)사용자는 검색 필드에 검색어를 입력하고 '검색'버튼을 클릭하여
ㄴ) 해당 웹 애플리케이션에 요청
ㄷ) 요청사항은 Spring=> DispatcherSerlvet이 전달받고
ㄹ) DispatcherSerlvet은 ->HandlerMapping에게 어떤 컨트롤러를 이용하면 좋을지 요청
ㅁ) HandlerMapping은 등록된 컨트롤러를 찾아 → DispatcherSerlvet에게 리턴
ㅂ) return된 컨트롤러 객체의 실행 메서드를 이용하여
ㅅ) Service 객체에게 요청처리를 위임
ㅇ) Service 객체는 요청내용을 처리(실행) 하기 위하여 DAO등을이용
a) "검색어"를 포함하는웹페이지들을 읽는다.
b) 각 웹페이지 내에서 "검색어"에 관련된 데이터를 추출
c) DAO의 저장 메서드에게 전달
ㅈ) DAO는 전달받은 데이터를 이용하여 데이터베이스에 저장
a) 접속
b) 셋팅
c) 누락된 값 처리
d) insert into~를 실행 ( insert into는 여러번 실행되는 이때 중간에 오류가 발생할 경우 성공부분까지만 저장되고 오류부분부터
저장는 안되지만! 트랜젹션의 경우 전체가 성공하면 저장되고 오류나면 초기화를 시켜 저장을 막는다.)
ㄱ~ㅂ: 프리젠테이션 영역 ㅅ~ㅇ: 비즈니스영역 ㅈ: 퍼시스턴트영역
'Framework > Spring' 카테고리의 다른 글
Spring-AOP(advice) (0) | 2021.06.21 |
---|---|
Spring-AOP(간략한 흐름) (0) | 2021.06.21 |
Spring-Annotation(어노테이션) (0) | 2021.06.15 |
Spring-의존성주입(인젝션) (0) | 2021.06.15 |
Spring-polymorphism(결합성테스트) (0) | 2021.06.15 |