일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 객체지향프로그래밍
- 자바
- RestControllerAdvice
- 스프링 시큐리티
- exception
- response
- proxy pattern
- 인터셉터
- SQL
- 관점지향프로그래밍
- 스프링부트
- aspect
- http
- Filter
- request
- Spring Security
- Interceptor
- Spring
- MYSQL
- 트랜잭션
- java
- Redis
- spring boot
- 스프링
- OOP
- git
- mybatis
- network
- 디자인패턴
- aop
- Today
- Total
목록스프링 (17)
장쫄깃 기술블로그
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/8m8RI/btrzvyPwXLY/WkLZqWfQC6KZ3qxlRcjAo1/img.jpg)
Advice 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의하고 있다. 예를 들어, '메서드를 호출하기 전'(언제)에 '트랜잭션을 시작한다.'(공통기능)기능을 적용한다는 것을 정의하고 있다. Target 클래스에 조인 포인트에 삽입되어져 동작(적용할 기능)할 수 있는 코드를 '어드바이스'라 한다. 관점으로서 분리되고 실행시 모듈에 위빙된 구체적인 처리를 AOP에서는 Advice라고 한다. Advice를 어디에서 위빙하는지는 뒤에 나오는 PointCut이라는 단위로 정의한다. 또한 Advice가 위빙되는 인스턴스를 '대상객체'라고 한다. advice는 Pointcut에서 지정한 Jointpoint에서 실행되어야하는 코드이다. cp.) 스프링의 Advice 타입 - Around Advice: Joinp..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b2cvZC/btrzuYHJujq/6wAsUPkx8HZo6YSkVBL2GK/img.jpg)
들어가며 이전 글들에서 AOP에 대해 설명한 적이 있다. 그런데 AOP가 파면 팔수록 알아야 할 부분이 많다고 느꼈다. 그래서 별도로 AOP에 대한 세부적인 사항들에 대해 다뤄보려 한다. AOP(Aspect Oriented Programming) 란? AOP 는 관점 지향 프로그래밍이다. AOP는 자바와 같은 객체 지향 프로그래밍(OOP)을 더욱 OOP 답게 사용할 수 있도록 도와주는 역할을 한다. AOP에서 관점은 핵심적인 관점과 부가적인 관점으로 나눌 수 있다. 핵심적인 관점은 핵심 비즈니스 로직을 의미하고, 부가적인 관점은 공통으로 처리되어야 하는 코드를 의미한다. 예를 들어, 위 상황에서 필수적으로 처리되어야 하는 권한, 로깅, 트랜잭션 등의 공통 기능이 정말 커다란 시스템에서 각각 추가된다면 똑..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cGoilH/btrzuNMMmvT/dsAu5loWf4GKgwpBqGzrDk/img.jpg)
AOP에 대한 설명은 해당 글을 참고 링크 : https://jangjjolkit.tistory.com/6 [Spring Boot] Filter, Interceptor, AOP 들어가며 자바 웹 개발을 하다보면, 공통적으로 처리해야할 업무들이 많다. 예를들어 로그인, 권한, XSS, pc/mobile 등 사용자 agent 체크, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코 jangjjolkit.tistory.com AOP 상세 설명 참고 링크 : https://jangjjolkit.tistory.com/10 [Spring Boot] AOP(Aspect Oriented Programming) 란? 들어가며 이전 글들에서 AOP에 대해 설명한 적이 있다. 그런데 AOP가 파면 팔수록 알아야 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/byFB3X/btrzuQhT9hV/Ee3t1QEqZQkz8Ikj5cxHr1/img.jpg)
Interceptor에 대한 설명은 해당 글을 참고 링크 : https://jangjjolkit.tistory.com/6 [Spring Boot] Filter, Interceptor, AOP 들어가며 자바 웹 개발을 하다보면, 공통적으로 처리해야할 업무들이 많다. 예를들어 로그인, 권한, XSS, pc/mobile 등 사용자 agent 체크, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코 jangjjolkit.tistory.com 1. HandlerInterceptorAdapter를 상속받아 인터셉터 구현하기 스프링에서 인터셉터는 HandlerInterceptorAdapter를 상속받아 구현할 수 있다. 해당 클래스는 preHandle, postHandle, afterCompletion, ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/OD58h/btrzrL9ebRX/CZZ95gjVsl3aQtaNKeoXU0/img.jpg)
Interceptor에 대한 설명은 해당 글을 참고 링크 : https://jangjjolkit.tistory.com/6 [Spring Boot] Filter, Interceptor, AOP 들어가며 자바 웹 개발을 하다보면, 공통적으로 처리해야할 업무들이 많다. 예를들어 로그인, 권한, XSS, pc/mobile 등 사용자 agent 체크, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코 jangjjolkit.tistory.com 1. @Component or @ServletComponentScan WebFilter 임베디드 WAS의 경우, 자동 설정에 의해서 Filter를 구현할 클래스에 @Component만 붙여줘도 필터가 등록된다. @Component public class SomeF..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b6zixL/btrznBmek7T/g2fYS6m3cXWa0dIwIy3i60/img.jpg)
들어가며 자바 웹 개발을 하다보면, 공통적으로 처리해야할 업무들이 많다. 예를들어 로그인, 권한, XSS, pc/mobile 등 사용자 agent 체크, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도있으며, 소스 관리도 되지 않는다. 즉, 공통 부분은 빼서 따로 관리하는게 좋다. 이러한 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법이 위와 같은 공통처리를 위해 활용할 수 있는 것이 3가지가 있다. 1. Filter 2. Interceptor 3. AOP 스프링에서 사용되는 Filter, Interceptor, AOP 세 가지 기능은 모두 무..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bKb5Bd/btrzkxKthFd/YogegkQmhbNw23sWpfrp4K/img.jpg)
들어가며 프로젝트 진행 중 MySQLTransactionRollbackException, SQLException이 발생하는 경우가 있었다. 해당 프로젝트는 AOP를 이용하여 트랜잭션을 적용한 상태였다. 그런데 해당 예외가 발생했을 때 정상적으로 Rollback이 발생하지 않는 상황이 발생했다. 이러한 문제를 조사하고 해결하며 참고한 자료를 정리해보았다. Rollback 이란? Rollback이란 트랜잭션의 원자성이 깨질 때, 즉 하나의 트랜잭션 처리가 비정상적으로 종료되었을 때의 상태를 뜻한다. Rollback이 이뤄진다면 트랜잭션을 다시 실행하거나 부분적으로 변경된 결과를 취소할 수 있다. 자세한 내용은 해당 글을 참고하면 된다. 링크 : https://jangjjolkit.tistory.com/4 [..