spring boot 간단 프로젝트 만들기_6

다돔잉·2021년 3월 10일
0

참고

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 인프런 강의를 정리한 것 --> 스프링부트 강의 바로가기

AOP

AOP란?

  • Aspect Oriented Programming
  • 관점 지향 프로그래밍
  • 공통 관심사항과 핵심 관심사항의 분리
  • AOP방법은 핵심 기능과 공통 기능을 분리 시켜놓고, 공통 기능을 필요로 하는 핵심 기능들에서 사용하는 방식이다.

    AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.
    예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다.
    AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드들을 발견할 수 있는 데 이것을 흩어진 관심사 (Crosscutting Concerns)라 부른다.
    흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP의 취지다.
    출처: https://engkimbs.tistory.com/746 [새로비]

AOP 진행 방식


1. AOP를 생성하고 어느 타켓에 적용할 것이라 지정을 하면 지정된 패키지내의 서비스(memberService)가 타겟으로 잡힘
2. 스프링은 서비스의 가짜 서비스(프록시)를 만듦
3. 스프링 컨테이너가 올라올 때(스프링빈 등록 시) 가짜 스프링빈을 앞에 세움
4. 가짜 스프링빈이 joinPoing.prceed를 만나면 실제 서비스(memberService)를 호출
즉, helloController가 호출하는 서비스는 실제 memberService가 아닌 프록시 memberService

profile
안녕

0개의 댓글