| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- @
- springmvc
- produces
- 비즈니스레이어
- springjdbc
- @Valid
- 의존주입
- SpringBoot
- 서비스레이어
- Java
- after-throwing
- @RequestMapping
- jointpoint
- MVC
- 유효성검사
- @ResponseBody
- spring
- application.properties
- AOP
- frontController
- gradle
- @RequestParam
- PointCut
- 바인딩변수
- 생성자주입
- Model
- 스프링
- .xml
- c:if
- 어노테이션
- Today
- Total
메모장
AOP ( 관점 지향 프로그래밍 ) 개념 본문
Spring 프레임 워크 란?
IoC 와 AOP를 지원하는 경량의 프레임워크 이다.
우리는 지금까지 IoC에 대해서 배워 보았고 .
간략하게 다시 짚어보자면 IoC 개념은 new를 개발자 대신 해준다.
결합도를 낮추는 코드를 작성해 볼 수 있다.
유지보수 용이한 코드가 되려면 낮은 결합도와 높은 응집도를 갖춰야 한다.
IoC에 대한 설명이 더 보고 싶다면 아래 링크를 참고 하도록 하자
AOP (Aspect Oriented Programming) 관점 지향 프로그래밍
우리가 지금까지 JAVA에서 배웠던 내용은
OOP (Object Oriented Programming) - 객체 지향 프로그래밍에 대해서만 배웠는데
Spring 과정으로 넘어오면서 이제는 관점 지향 프로그래밍에 대해 알아볼 예정이다.
AOP(Aspect Oriented Programming) 란 '관점 지향 프로그래밍'으로서
개발 로직과 비즈니스 로직을 분리하여 관리하는 Spring 개념이다.
즉, 공통 관심 사항과 핵심 관심 사항(코어 코드)을 분리하여 반복된 작업을 줄이는 Spring 개념입니다.
쉽게 설명하자면, 100개 함수가 처리해야 할 공통 기능 코드(예: 로깅) 들을 분리해 별도 Bean으로 관리하는 컨셉입니다.
기존의 Controller 메서드를 예시로 들 예정이다 .
LoginController 의 login.do부분을 살펴보자

생략이 되어있지만 순서로 나눈다면
① (개발자용) 로그 : 확인을 위해 로그를 남긴다.
② 권한 확인 : 보안, 인증 , 허가 되었는지, ...
③ 비즈니스 메서드 (CRUD,핵심로직, 핵심관심)
④ 트랜잭션, 보안관제 로그 , ...관제 로그를 찍을 수 있다.(관제실에서 조정한다해서 관제 로그 라고한다. )
관제 로그 (요즘 디지털 포렌식이라는 단어로 익숙하다.)
관제로그는 네트워크 기록, DB 기록,ip 주소가 남는다 던지,, 등등 보안 기록을 찾아서 유추한다.
여기서 사용자의 요청이 달라진다고 하면 ?
① , ② , ④번은 계속 사용되고 정말 변경되는 부분은 ③번만 달라졌다.

①, ②, ④번 같이 반복되는 로직을 공통 로직, 횡단 관심이라고 한다.
(횡단보도 할때 그 횡단 == 가로지른 다는 뜻 )
반복되는 로직들은 어디든 가로 지르기 때문에 횡단 로직이라고 한다. (횡단 관심)
③ 같이 바뀌는 부분을 핵심 관심, 핵심 로직, 비즈니스 메서드 , CRUD
뭔가 반복,복사가 되면 모듈화 하고 싶어한다. 객체지향에서는 이런 개념이 없었는데
Spring 에서는 컨테이너 개념이 나오면서
"관심 분리(Separation of Concerns)" 해보는건 어떨까 ? 라는 생각에서 탄생하게되었다.
관심 == 로직 ( "로직 분리" 라고 함 ) 로직분리를 하면 ★ 응집도가 높아진다 ★
( == 로그는 로그 따로 쓰고 메서드는 메서드 따로 쓰기 때문에 )
'Spring > 개념정리' 카테고리의 다른 글
| AOP (.xml 방식) (0) | 2024.07.04 |
|---|---|
| AOP 용어 정리 (0) | 2024.07.04 |
| @RequestParam (0) | 2024.06.21 |
| Model 객체 (0) | 2024.06.21 |
| 비즈니스 레이어 (서비스 레이어) 적용 (0) | 2024.06.21 |