Spring - Aop autoproxy방식,pointcut 종류
프로그래밍 정리/Spring
2019. 12. 31. 11:21
반응형
Spring - Aop autoproxy방식, pointcut 종류
(관점 지향 프로그래밍, Aspect Oriented Programming)
- @pointcut 종류
1 2 3 4 5 6 7 8 9 10 11 | @Pointcut("execution(public void get*(..))") // public void인 모든 get메소드 @Pointcut("execution(* com.javalec.ex.*.*())") // com.javalec.ex 패키지에 파라미터가 없는 모든 메소드 @Pointcut("execution(* com.javalec.ex..*.*())") // com.javalec.ex 패키지 & com.javalec.ex 하위 패키지에 파라미터가 없는 모든 메소드 @Pointcut("execution(* com.javalec.ex.Worker.*())") // com.javalec.ex.Worker 안의 모든 메소드 @Pointcut("within(com.javalec.ex.*)") //com.javalec.ex 패키지 안에 있는 모든 메소드 @Pointcut("within(com.javalec.ex..*)") //com.javalec.ex 패키지 및 하위 패키지 안에 있는 모든 메소드 @Pointcut("within(com.javalec.ex.Worker)") //com.javalec.ex.Worker 모든 메소드 @Pointcut("bean(student)") //student 빈에만 적용 @Pointcut("bean(*ker)") //~ker로 끝나는 빈에만 적용 | cs |
- 어노테이션(@)을 사용하여 autoproxy를 만들어보자
-LogAop.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @Aspect public class LogAop { @Pointcut("within(com.javalec.test.*)") //ex패키지와 하위 패키지의 모든 메소드 실행 private void pointcut(){ } @Around("pointcut()") //Advice 종류 지정(여기선 Around) public Object loggerAop(ProceedingJoinPoint joinpoint) throws Throwable{ //pointcut으로 지정한target의 앞뒤로 실행 System.out.println("┌(시작부분) 이부분은 공통적으로 들어가는 문장입니다.┐"); try { Object obj = joinpoint.proceed(); return obj; }finally { System.out.println("└(끝부분) 이부분은 공통적으로 들어가는 문장입니다.┘"); } } @Before("within(com.javalet.test.*)") //Advice 종류 지정(여기선 Before) public void beforAdvice() { System.out.println("beforeAdvice"); } } | cs |
-applicationCTX.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <aop:aspectj-autoproxy/> //autuproxy 지정 <bean id="logAop" class="com.javalec.test.LogAop"/> <bean id="student" class="com.javalec.test.Student"> <property name="name" value="홍길동"/> <property name="age" value="11"/> <property name="gradenum" value="4"/> </bean> <bean id="worker" class="com.javalec.test.Worker"> <property name="name" value="아무개"/> <property name="age" value="35"/> <property name="job" value="programmer"/> </bean> | cs |
나머지소스는 저번글과 같다.
(https://cloud0477.tistory.com/66)
-main.java
1 2 3 4 5 6 7 8 9 10 | public static void main(String[] args) { AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX.xml"); Student student = ctx.getBean("student", Student.class); student.getStudentInfo(); ctx.close(); } | cs |
-Student.java
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 31 32 33 | public class Student { private String name; private int age; private int gradeNum; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getGradeNum() { return gradeNum; } public void setGradeNum(int gradeNum) { this.gradeNum = gradeNum; } public void getStudentInfo() { System.out.println("이름 : " + getName()); System.out.println("나이 : " + getAge()); System.out.println("학년 : " + getGradeNum()); System.out.println("반 : " + getClassNum()); } } | cs |
-실행결과
반응형
'프로그래밍 정리 > Spring' 카테고리의 다른 글
MVC_Spring - @RequestMapping 사용하기 (0) | 2019.12.31 |
---|---|
MVC_Spring - MVC_Spring 시작 (0) | 2019.12.31 |
Spring - Aop(관점 지향 프로그래밍, Aspect Oriented Programming) (0) | 2019.12.30 |
Spring - bean을 이용해 .properties 값 가져오기 (0) | 2019.12.26 |
Spring - XML과 Bean을 이용해 .properties 값 가져오기 (0) | 2019.12.09 |