AspectJ

A collection of 29 posts

AspectJ

AspectJ를 이용한 코드젠과 프레임워크 2

이전 글 AspectJ를 이용한 코드젠과 프레임워크에 이어지는 글로 현재는 Service과 Controller까지도 적용을 마치고 실행 후 잘 돌아가는 모습을 살펴보습니다. 지금은 웹 쪽을 REST 스타일로 고칠겸, 새 프로젝트로 깔끔하게 정리하고, 새로 디자인한 것까지 모두 합치고 있습니다. (역시 적당한 단계별로 해야지 한꺼번에 하려니깐 정신없고 오래 걸리는

AspectJ

AspectJ를 이용한 코드젠과 프레임워크

오늘은 도메인과 DAO쪽에만 AOP를 적용하는 AspectJ 파일을 만들어보았습니다. ROO를 참고하면서 말이죠. ROO와 다른 점은 프레임워크 코드를 이용한다는 거죠. (ROO는 제품 코드에서 ROO 코드는 하나도 이용하지 않는 완전한 non-intrusive 내지 transparent 코드젠 기술을 제공합니다.) 이런 식으로 새로운 형태의 OSAF도 만들어 낼 수도 있겠습니다. 하지만.. 할지

@DeclareError

AspectJ의 @DeclareError를 사용해서 컴파일 시점에 아키텍처 에러 검증하자.

참조: http://www.parleys.com/display/PARLEYS/Home#slide=1;title=Spring%20Architectures;talk=20676612 위 발표자료 내용 주에 아주 잼나는 코드를 건졌습니다. 지난 번 KSUG에서 발표한 내용과 겹치는데 아래 코드는 그때 제가 보여드린 코드보다 좀 더 좋은 것 같아서 가져왔습니다. @Aspectpublic class SystemArchitecture

AspectJ

AspectJ와의 연동을 고려한다면, 포인트컷을 최소화 해야합니다.

무슨 이야기냐면, 최소 권한 원칙인가… 그런거랑 비슷한겁니다. 바로 예제를 보면서 살펴보죠. @Aspect public class HibernateExceptionToDataAccessException {     @Pointcut(“@within(org.springframework.stereotype.Repository)”)     public void accountHibernateExceptionInDao(){}     @AfterThrowing(pointcut=”accountHibernateExceptionInDao()”, throwing=”e”)    

AspectJ

AspectJ로 final method에도 위빙하기

소스 코드는 이전과 동일합니다. 그 상태에서 프록젝트에 AspectJ Nature를 추가해줍니다. 그런 다음에 프로젝트 클린을 하여 기존의 클래스파일을 비우고 다시 컴파일하게 합니다.(Alt + P, N, 엔터) 지금, 저는 아무런 .aj 파일도 만들지 않았습니다. 그냥 이전에 만들어둔 Spring @AOP를 사용하고 있을 뿐입니다. @Aspectpublic class FinalHelloAspect {  

AspectJ

TSE 2006(Applying Domain Design in the Enterprise with AspectJ)

AspectJ In Action의 저자답게 AspectJ로 DDD를 돕는 여러가지 방법을 설명해줬습니다. • Overview of Domain-driven design• Aspects for crosscutting infrastructure• Aspects for fine-grained DI• Aspects for domain logic• Aspects for enforcing DDD bestpractices• Proceeding towards DDD 이런 순서대로 발표가 진행됐는데, 토비님께서 마소에 기고하셨던 내용과 비슷한 내용들이

AspectJ

Aspect-Oriented Programming with Spring AOP and AspectJ

Interface 21의 아드리안이 발표한 PPT인것 같습니다. 구글에서 “spring aop aspectj”로 검색했더니 나왔습니다. 굉장히 멋진 발표였을 것 같은데 중간 중간 데모를 못보는 것이 너무 아쉽습니다. Spring AOP에서 AsepctJ와 연동하는 부분이 막혀서 구글링을 하던 중이였는데 AspectJ의 aj 파일을 컴파일 해서 class 파일로 만들어야

AspectJ

6.2. @AspectJ support

@AspectJ 는 Java 5에 추가된 어노테이션을 사용하여 aspect를 정의하는 스타일을 말하며 이것은 AspectJ 라이브러리를 사용하여 AspectJ 5와 동일한 방법으로 aspect와 pointcut을 정의할 수 있습니다. 하지만 Spring AOP를 사용하여 실행하기 때문에 AspectJ의 weaver나 complier는 사용하지 않아도 됩니다. 그것들을 사용하면 AspectJ의 모든 기능을 사용할 수 있습니다.

@Around

@Around 어드바이스 예제

이전까지 사용했던 @Before와 @AfterReturning 대신 @Around 어드바이스 하나로 기존에 했던 인사말들을 모두 처리할 수 있습니다. 더불어 리턴값도 변경할 수 있으며 대상 메소드의 실행 여부도 결정할 수 있습니다. 제약조건은 어드바이스의 메소드 첫번째 인자로 ProceedingJoinPoint 가 와야 하며 실제로는 이 인터페이스를 구현한 MethodInvocationProceedingJoinPoint 이녀석의 객체가 넘어옵니다.

You've successfully subscribed to Whiteship!
Could not sign up! Invalid sign up link.