>>>>>>>>>>>>>> @AspectJ 사용 AOP 예제 2 >>>>>>>>>>>>>>>>>>
------------------------------------------------------------MannerAOP.java
package thirdAspectAuto;
import java.util.GregorianCalendar;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class MannerAOP {
@Before("execution(* set*(String))")
public void confirmName(){
System.out.println("이름을 세팅합니다");
}
@Before("execution(* set*(java.util.GregorianCalendar))")
public void confirmBirthday(){
System.out.println("생일을 세팅합니다");
}
@Before("execution(* set*(int))")
public void confirmAge(){
System.out.println("나이를 세팅하기 전입니다");
}
@After("execution(* set*(int))")
public void confirmAge2(){
System.out.println("나이를 세팅하기 이후입니다");
}
@Before("execution(* getAge(..))")
public void confirmBeforeSettingAge1(){
System.out.println("나이를 반환하기 이전입니다");
}
@AfterReturning(returning="age", value="execution(* getAge(..))")
public void confirmBeforeSettingAge12(int age){
System.out.println("나이를 반환된 나이입니다 1:"+age);
}
@After("execution(* getAge(..))")
public void confirmBeforeSettingAge123(){
System.out.println("반환 된 반환된 나이입니다2:");
}
@AfterReturning(returning="name",value="execution(* getName(..))")
public void confirmBeforeSettingName22222(String name){
System.out.println("원래 이름은:"+name);
}
@AfterReturning(returning="date", value="execution(* getBirthday(..))")
public void confirmBeforeSettingDate33333(GregorianCalendar date){
System.out.println("원래 생일은 :"+date.getTime());
}
}
------------------------------------------------------------Human.java
package thirdAspectAuto;
import java.util.GregorianCalendar;
public interface Human {
public int getAge();
public void setAge(int age);
public GregorianCalendar getBirthday();
public void setBirthday(GregorianCalendar birthday);
public String getName();
public void setName(String name);
}
------------------------------------------------------------GilDong.java
package thirdAspectAuto;
import java.util.GregorianCalendar;
public class GilDong implements Human {
String name;
int age;
GregorianCalendar birthday;
private GilDong(){
name="홍길동";
age=16;
birthday=new GregorianCalendar(2002,12,25);
}
@Override
public int getAge() {
System.out.println("나이를 반환하고 있다~");
return age;
}
@Override
public void setAge(int age) {
this.age=age;
System.out.println("나이가 세팅되고 있다~");
}
@Override
public GregorianCalendar getBirthday() {
return birthday;
}
@Override
public void setBirthday(GregorianCalendar birthday) {
this.birthday=birthday;
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name=name;
}
@Override
public String toString() {
return "GilDong [name=" + name + ", \nage=" + age + ", \nbirthday="
+ birthday.getTime() + "]";
}
}
------------------------------------------------------------aopAppContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<aop:aspectj-autoproxy/>
<bean id="human" class="thirdAspectAuto.GilDong"/>
<bean id="mannerAOP" class="thirdAspectAuto.MannerAOP"/>
</beans>
------------------------------------------------------------TestThirdAOP.java
package thirdAspectAuto;
import java.util.GregorianCalendar;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestThirdAOP {
public static void main(String[] args) {
BeanFactory bf=new ClassPathXmlApplicationContext("thirdAspectAuto/aopAppContext.xml");
Human human=(Human)bf.getBean("human");
System.out.println("나이 처리후 화면에 리턴된 나이"+human.getAge());
System.out.println(human.getBirthday().getTime());
System.out.println(human.getName());
human.setAge(20);
human.setBirthday(new GregorianCalendar(2012,12,21));
human.setName("이순신");
System.out.println(human);
}
}
'..열심히 공부하세.. > MVC' 카테고리의 다른 글
| [24] Spring JDBC 예제 (0) | 2012.07.13 |
|---|---|
| [22] @AspectJ 사용 AOP 예제 1 (0) | 2012.07.12 |
| [21] @AspectJ의 Pointcut 살펴보기 (0) | 2012.07.12 |
| [20] 스프링 Advice 예제 2 (0) | 2012.07.11 |
| [19] 스프링 Advice 예제 1 (0) | 2012.07.11 |