ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Aop와 Scope
    WEB/Spring 2022. 10. 31. 09:27

    AOP란

    Aspect Oriented Programming의 약자로 관점 지향 프로그래밍입니다.  쉽게 말해서 어떠한 로직을 기준으로 핵심적인 관점과 부가적인 관점으로 분류 후 각각의 관점을 기준으로 모듈화한다는 뜻입니다.

     

    여기서 말하는 핵심적인 관점은 비즈니스 로직이 될 수 있고 부가적인 관점은 핵심 로직이

    실행되기 위해 행해져야 하는 데이터베이스 연결, 로깅, 파일 입출력 등이 될 수 있습니다.

     

    Aspect

       흩어진 관심사(Crosscutting Concerns)를 묶어서 모듈화 한 것. 하나의 모듈. Advice와 Point Cut이 들어간다.

    Target

       Aspect가 가지고 있는 Advice가 적용되는 대상(클래스, 메서드 등등)을 말한다.

    Advice

       어떤 일을 해야할 지에 대한 것. 해야할 일들에 대한 정보를 가지고 있다.

    Join Point

       가장 흔한 Join Point는 메서드 실행 시점이다. Advice가 적용될 위치, 끼어들 수 있는 지점. 생성자 호출 직전, 생성자 호출 시, 필드에 접근하기 전, 필드에서 값을 가져갔을 때 등등.

    Point Cut

       Join Point의 상세한 스펙을 정의한 것. 어디에 적용해야 하는지에 대한 정보를 가지고 있다. “A 클래스에 B 메서드를 적용할 때 호출을 해라.”와 같은 구체적인 정보를 준다.

     

     AOP는 반복적인 코드들을 파일화 시켜서 편하게 관리

     

    <aop:before>: 메소드 실행 전에 advice 실행

    <aop:after-returning>: 정상적으로 메소드 실행 후에 advice 실행

    <aop:after-throwing>: 메소드 실행중 exception 발생시 advice 실행

    <aop:after>: 메소드 실행중 exception이 발생하여도 advice 실행

    <aop:around>: 메소드 실행 전/후 및 exception 발생시 advice 실행

     

    * 모듈화: 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것


    Bean 스코프

     

     

    - singleton:하나의 인스턴스가 만들어지고 이후부턴 그 인스턴스를 공유하는 방식입니다.(단 하나의 객체만 존재)

     

    -prototype:빈을 요청할 때마다 새로운 빈 인스턴스가 만들어집니다. 멀티 스레드 환경이라면 prototype을 사용해야 합니다.(다수의 객체가 존재할 수 있음)

     ex) @Scope("prototype") 입니다. 

     

    - request: HTTP 생명 사이클 마다 한개의 빈을 사용합니다. 각각의 HTTP request는 자신만의 객체를 가집니다. Web-aware context 안에서만 사용이 가능합니다.

     ex) Application context

     

    -session: HTTP 세션의 생명주기 마다 하나의 빈을 사용합니다. 위 request와 마찬가지로Web-aware context 안에서만 사용이 가능합니다.

     ex) Application context

     

    -global session: globalHTTP request 생명 사이클 마다 하나의 객체만 존재 합니다. 위와 마찬가지로Web-aware context 안에서만 사용이 가능합니다.

     

    728x90

    'WEB > Spring' 카테고리의 다른 글

    [Spring] Querydsl  (0) 2023.02.15
    [Spring] JPA  (0) 2023.02.15
Designed by Tistory.