Spring

· Spring
@Pointcut 가 아닌 @Around에 execution 명시자를 직접 지정할 수 도 있습니다. @Asepct public class CacheAspect{ @Around("execution(public * chap07..*(..))") public Object execute(ProceedingJoinPoint joinPoint) throws Throwable { ... } } 만약 같은 Pointcut을 여러 Advice가 함께 사용한다면 공통 Pointcut을 재사용할 수도 있습니다. ExeTimeAspect @Aspect @Order(1) public class ExeTimeAspect { @Pointcut("execution(public * chap07..*(long))") private vo..
· Spring
이번에는 Spring에서 Advice 적용 순서에 대해 알아보겠습니다. 한 Pointcut에 여러 Advice를 적용할 수도 있습니다. CacheAspect package aspect; import java.util.HashMap; import java.util.Map; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; /** * 간단하게 캐시 기능을 구현한 클래스 */ @Aspect public class CacheAspect { privat..
· Spring
Aspect를 적용할 위치를 지정할 때 사용한 Pointcut 설정을 보면, execution 명시자를 사용했습니다. @Aspect public class ExeTimeAspect { @Pointcut("execution(public * chap07..*(..))") private void publicTarget() { } execution 명시자는 Advice를 적용할 메서드를 지정할 때 사용합니다. 기본형식 execution(수식어패턴? 리턴타입패턴 클래스이름패턴?메서드이름패턴(파라미터패턴)) '수식어패턴'은 생략가능하며 public, protected 등이 옵니다. 스프링 AOP는 public 메서드에만 적용할 수 있기 때문에 사실상 public만 의미가 있습니다. '리턴타입패턴'은 리턴 타입을 명..
· Spring
[Spring] Spring AOP 구현해보기 (@Aspect, @Pointcut, @Around) 이전 글 [Spring] Spring AOP AOP AOP : Aspect Oriented Programming의 약자로, 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법입니다. AOP는 핵심 기능과 공통 기능 muscleking3426.tistory.com 프록시 생성 방식 package config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context...
· Spring
이전 글 [Spring] Spring AOP AOP AOP : Aspect Oriented Programming의 약자로, 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법입니다. AOP는 핵심 기능과 공통 기능의 구현을 분리함으로 muscleking3426.tistory.com 스프링 AOP 구현 스프링 AOP를 이용해서 공통 기능을 구현하고 적용하는 방법은 단순합니다. - Aspect로 사용할 클래스에 @Aspect를 붙인다. - @Pointcut으로 공통 기능을 적용할 Pointcut을 정의한다. - 공통 기능을 구현한 메서드에 @Around를 적용한다. @Aspect, @Pointcut, @Around를 이용한 AOP 구현 개발자는 공통 기능을 제공하는 As..
· Spring
AOP AOP : Aspect Oriented Programming의 약자로, 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법입니다. AOP는 핵심 기능과 공통 기능의 구현을 분리함으로써 핵심 기능을 구현한 코드의 수정 없이 공통 기능을 적용할 수 있게 만들어 줍니다. AOP는 우리말로 관점지향 프로그래밍 정도로 많이 번역하고 있으나, Aspect는 구분되는 기능이나 요소를 의미하기 때문에, '관점'보다는 '기능 또는 관심'이라는 표현이 더 알맞습니다. 스프링도 프록시를 이용해서 AOP를 구현하고 있습니다. AOP의 기본 개념은 핵심 기능에 공통 기능을 삽입하는 것입니다. 즉, 핵심 기능의 코드를 수정하지 않으면서 고통 기능의 구현을 추가하는 것이 AOP입니다. ..
· Spring
트랜잭션의 처리 방식을 이해하려면 AOP(Aspect Oriented Programming)를 이해해야 합니다. 제일 어려운 부분이니 자세히 짚어보겠습니다. 이전 요약글 [Spring] AOP 프로그래밍이란 ? AOP(Aspect-Oriented Programming)는 소프트웨어 개발에서 모듈화와 코드 재사용을 향상하기 위한 프로그래밍 패러다임 중 하나입니다. AOP는 주로 코드의 횡단 관심사(Cross-Cutting Concerns)를 분리하여 모듈 muscleking3426.tistory.com 준비 먼저 AOP 프로젝트를 준비하기 위해 pom.xml의 Dependencies에 아래코드를 추가해 줍니다. org.aspectj aspectjweaver 1.8.13 스프링 프레임워크의 AOP 기능은 s..
· Spring
스프링 컨테이너는 빈 객체를 한 개만 생성합니다. 과연 그런지 한번 코드를 통해 알아볼까요? public class Main { public static void main(String[] args) { //1. 컨테이너 초기화 AbstractApplicationContext ctx = new AnnotationConfigApplicationContext(AppCtx3.class); //2. 빈 객체 로드 후, 사용하기 Client client = ctx.getBean(Client.class); Client client2 = ctx.getBean(Client.class); System.out.println("두 개의 객체가 같을까 ? : " + (client == client2)); client.send(..
· Spring
지난 포스팅에서는 빈 라이프 사이클 중 스프링에서 제공하는 인터페이스를 이용해서 빈 객체의 초기화와 소멸을 실습해 보았습니다. [Spring] 빈 라이프 사이클 : Bean 초기화, 소멸 (인터페이스) 컨테이너 초기화와 종료 스프링 컨테이너는 초기화, 종료 라이프사이클을 갖고 있습니다. 컨테이너 초기화 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class); 위 예제를 muscleking3426.tistory.com 이번 포스팅에서는 커스텀 메서드를 통해 빈 객체의 초기화와 소멸을 실습해 보겠습니다. 빈 객체의 초기화와 소멸을 스프링 인터페이스(InitializingBean, Dispo..
· Spring
컨테이너 초기화와 종료 스프링 컨테이너는 초기화, 종료 라이프사이클을 갖고 있습니다. 컨테이너 초기화 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class); 위 예제를 보면, AnnotationConfigApplicationContext 생성자를 이용해서 컨텍스트 객체를 생성하는데 이 시점에 스프링 컨테이너를 초기화합니다. 컨테이너에서 빈 객체 구하고 사용 Greeter g = ctx.getBean("greeter", Greeter.class); String msg = g.greet("스프링"); System.out.println(msg); 스프링 컨테이너는 설정 클래스에서 정보를 읽..
runnnerDevHong
'Spring' 카테고리의 글 목록 (5 Page)