능글맞은 구렁이

Spring-DI/AOP정리! 본문

Framework/Spring

Spring-DI/AOP정리!

보라색츄르 2021. 6. 18. 12:14

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
Comments