일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MariaDB
- 인덱스
- aop
- 이팩티브 자바
- react
- 인프런김영한
- 스프링부트와AWS로혼자구현하는웹서비스
- 이펙티브 자바
- 기술면접
- SQL쿡북
- 클린코드
- 혼공SQL
- 알고리즘
- 알고리즘분석
- 자료구조
- 도메인 주도 개발 시작하기
- AWS
- 인프런백기선
- 자바
- java
- jpa
- 이펙티브자바
- AWS RDS
- CleanCode
- vue.js
- 자바스터디
- 네트워크
- mysql
- 자바예외
- DDD
- Today
- Total
목록aop (4)
기록이 힘이다.
CGLIB 구체 클래스 기반 프록시 문제점 -대상 클래스에 기본 생성자 필수 -생성자 2번 호출 문제 -final 키워드 클래스, 메서드 사용 불가 스프링 3.2, CGLIB를 스프링 내부에 함께 패키징 CGLIB를 사용하려면 CGLIB 라이브러리가 별도로 필요했다. 스프링은 CGLIB 라이브러리를 스프링 내부에 함께 패키징해서 별도의 라이브러리 추가 없이 CGLIB를 사용할 수 있게 되었다. 'CGLIB spring-core org.springframework' CGLIB 기본 생성자 필수 문제 해결 스프링 4.0부터 CGLIB의 기본 생성자가 필수인 문제가 해결되었다. 'objenesis'라는 특별한 라이브러리를 사용해서 기본 생성자 없이 객체 생성이 가능하다. 참고로 이 라이브러리는 생성자 호출 없..
@Around만 있으면 되는데 왜? 이렇게 제약을 두는가? 제약은 실수를 미연에 방지한다. 일종에 가이드 역할을 한다. 만약 @Around를 사용했는데, 중간에 다른 개발자가 해당 코드(Object result = joinPoint.proceed();)를 수정해서 후출하지 않았다면? 큰 장애가 발생했을 것이다. 처음부터 @Before 를 사용했다면 이런 문제 자체가 발생하지 않는다. 제약 덕분에 역할이 명확해진다. 다른 개발자도 이 코드를 보고 고민해야 하는 범위가 줄어들고 코드의 의도도 파악하기 쉽다. @Around("hello.aop.order.aop.Pointcuts.orderAndService()") public Object doTransaction(ProceedingJoinPoint joinPo..
스프링이 제공하는 AOP는프록시를 사용한다. 따라서프록시를 통해메서드를 실행하는시점에만 AOP가 적용된다. AspectJ를 사용하면앞서설명한것처럼더 복잡하고 더다양한 기능을사용할 수있다. > 그렇다면 스프링 AOP 보다는 더기능이많은 AspectJ를직접 사용해서 AOP를 적용하는것이더 좋지 않을까? > AspectJ를 사용하려면공부할내용도 많고, 자바관련 설정(특별한컴파일러, AspectJ 전용 문법, 자바 실행옵션)도복잡하다. 반면에스프링 AOP는 별도의추가 자바설정 없이스프링만있으면 편리하게 AOP 를사용할 수있다. 실무에서는스프링이 제공하는 AOP 기능만 사용해도대부문의 문제를해결할수 있다. 따라서스프링 AOP가제공하는기능을학습하는것에집중하자.