일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Paging
- 세션
- 프리코스
- 백준
- CircuitBreaker
- 프로그래머스
- AOP
- 의존성
- 코드리뷰
- MSA
- Docker
- HTTP
- 우테코
- mock
- Spring Batch
- JPA
- 우아한세미나
- yml
- 스프링부트
- Level2
- 미션
- 자바
- REDIS
- AWS
- 레벨2
- 트랜잭션
- 스프링 부트
- 우아한테크코스
- JUnit5
- 서블릿
- Today
- Total
목록AOP (4)
늘

해당 글은 조금 각색해서 우아한테크코스 블로그(테코블)에 있습니다! 트랜잭션을 사용할 때, 아래의 사진처럼 private 메서드에 걸면 컴파일 에러가 나오는 것을 확인할 수가 있다. 인텔리제이가 알려주는 메시지를 보면 private 만 사용하지 않으면 된다고 한다. 이 이유에 대해서는 spring 2.5버전 이후부터는 default로 CGLIB을 사용하므로 상속을 통해 프록시를 구현한다. 하지만 private메서드는 상속이 불가능하기 때문에 프록시를 만들 수 없기 때문이다. 하지만 스프링 공식문서를 보면 public 이외의 모든 메서드는 트랜잭션이 적용되지 않는다고 한다. 실제 protected로 하면 컴파일단에선 예외가 잡히지 않는다. 왜냐하면 프록시는 만들어지기 때문이다. 하지만 스프링 공식문서를 보..

스프링과 JPA로 애플리케이션을 개발하다 보면 프록시에 대해서 많이 만나게 된다. 이와 관련되어 구글링을 해보면 게시글들마다 다른 말을 해서 직접 정리해보려고 한다. - 총정리 스프링 AOP는 [런타임에 프록시 인스턴스가 동적으로 변경되는] 다이나믹 프록시 기법으로 구현되어있다 인터페이스의 유무에 따라 다음과 같이 나뉜다. 1. JDK 다이나믹 프록시 2. CGLIB JDK Dynamic Proxy JDK에서 지원하는 프록시 생성 방법 Invocation Handler를 재정의한 invoke를 구현하여 부가기능 수행 Reflection API 사용 인터페이스를 통해서만 프록시 생성 가능 CodeGenratorLibrary(CGLIB) 상속을 기반으로 프록시 생성 final이 붙으면 오버라이딩이 불가능하므..

프로젝트가 거의 막바지 단계에 다다라서 운영할 때 꼭 필요한 로그를 찍으려고 한다. 이번 로그는 AOP를 이용해서 찍었지만 다음번에는 인터셉터를 이용해서 찍어보려고 한다. (경험은 많을수록 좋으니😇😇) Log설정 build.gradle implementation 'org.springframework.boot:spring-boot-starter-aop' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8' 우리는 aop를 적용할것이기 때문에 aop와 p6spy라이브러리를 추가해준다. slf4j slf4j2 p6spy는 나중에 정리해보도록 하겠다. 참고 주소는 글 맨 아래에 남겨두겠다! logback-spring.xml appli..
스프링 프레임워크란? - 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다. - 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다 특징 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다. 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다. 관점 지향 프로그래밍(AOP : Aspect-Oriented Pro..