The Debugging Chronicles : "코드의 미학"

[Spring] AOP(Aspect Oriented Programming) 관점 지향 프로그램 - 1 본문

Spring

[Spring] AOP(Aspect Oriented Programming) 관점 지향 프로그램 - 1

sweetseonah1004 2024. 10. 15. 09:56

스프링

:IoC와 AOP를 지원하는 경량의 프레임워크

                                    

IoC 제어의 역행(역전)

new (== 객체 생성 및 관리) 를 원래 개발자

>>컨테이너가 한다!

DS,HM,VR,Command 객체들,@Component, @Controller,@Repository,@Service ,...

+  의존 주입(DI) : 생성자 주입,  setter주입, @Autowired

*결합도를 낮출 수 있음*

 

경량

POJO 위주

    : 구조, 틀, 구격 : 개발자들의 역량을 상향평준화, 유지보수 용이


[AOP]

Aspect Oriented Programming

관점 지향 프로그래밍

----------------------------

JAVA == OOP(객체 지향 프로그래밍, Object Oriented Programming)

                            class Person

                            class Student

                            class Animal

----------------------------

절차 지향 프로그래밍 = > C 언어 

예) 별을 찍어보세요, 배열에 저장해보세요....

----------------------------

 

그럼 관점 지향은 뭘까?

먼저 관점을 알아야한다.

 

"관점" (=== 기능)

 

우리가 객체 지향 프로그래밍을 하기 때문에 

우리가 일을 처리, 메서드를 수행할 때 반드시 "주어" 가 필요하다.

 

절차  지향  == 함수 Static function test()

(반대)

객체 지향.  == 메서드 System.out.println()

                                   new Scanner() sc.nextInt()

 

예시)

게시판에 글을 작성할 수도 있고 검색할 수 도 있다.

게시판에 글을 수정하거나 삭제할 수도 있다.

이때 로그인 했는지 여부 및 이 글의 주인인지에 대한 여부를 확인해야한다.

추가로 검색 유입량 

사람이 한번이라도 select을 하면 기록을 하고 있다.

그리고 보안도 하고 있다.

 

 

검색 세로로 된 그림을 

"핵심 기능"

"핵심 관심(관점)"

"비즈니스 메서드"

"CRUD"

"서비스"

"종단 처리된 기능"

이라고 한다.

그럼 빨간색은 뭘까?

"공통 기능"

"공통 로직"

"공통 관심(관점)"

"횡단 관심"

"횡단 처리된 기능"

ex) 인가, 허가 확인

ex) 인증(본인 인증) , 유효성 검사

ex) 로그(로깅)

ex) 보안

ex) 트랜잭션 처리

 


 

만약

종단 횡단으로 나누어 두지 않았으면 어떤일이 일어날까?

 

 

공통 로직을 1하만 5번 추가되어도 엄청난 량의 코드가 추가된다.

그래서

 

모듈화 함수화 한다.

 

앞으로 할 것들이 이런 것들이다.