-
45일 차 Spring(스프링 프레임워크) AOP 용어정리 및 구현삼성SDS_멀티캠퍼스/Spring Frame Work 2015. 11. 11. 10:47반응형
PointCut - 어떤 메소드가 호출되는 시점
Weaving - 다형성에 의한 동적바인딩
공통관심사항 코드부터 만들고 (MyAspect 로 명명하겠다)
핵심관심사항이 구현된 객체(Target)를 빈으로 등록
aop:config태그 안에 pointcut정의, advice들을 aspect로 등록
공통관심사항(MyAspect.java)
package aop5;
public class MyAspect {
public void before(){
System.out.println("문을 열고 집에 들어간다");
}
public void after_returning(){
System.out.println("옷 갈아입고 잔다");
}
public void after_thirowing(){
System.out.println("119에 신고한다");
}
public void after(){
System.out.println("문을 열고 집을 나온다");
}
}
그리고 나서
Target클래스랑 공통관심사항이 적용된 클래스들을 빈으로 등록해보자
<?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.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
<bean id="boy" class="aop5.Boy"></bean>
<bean id="girl" class="aop5.Girl"></bean>
<bean id="myAspect" class="aop5.MyAspect"></bean>
</beans>
<?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.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
<bean id="boy" class="aop5.Boy"></bean>
<bean id="girl" class="aop5.Girl"></bean>
<bean id="myAspect" class="aop5.MyAspect"></bean>
<aop:config>
<aop:pointcut expression="execution (public void aop5.*.doSomething())"
id="pt" />
<aop:aspect ref="myAspect">
<aop:before method="before" pointcut-ref="pt"/>
<aop:after-returning method="after_returning" pointcut-ref="pt"/>
<aop:after-throwing method="after_thirowing" pointcut-ref="pt"/>
<aop:after method="after" pointcut-ref="pt"/>
</aop:aspect>
</aop:config>
</beans>
그리고 동작시키는 Test클래스를 작성하자
위의 사진과 같이 FileSystemXmlApplicationContext로 하면 파일시스템 경로를 통해 xml파일을 찾는다.
그리고 context.getBean( ID값, 인터페이스 클래스)을 사용해야 한다
왜냐면 위빙이 일어날 때 컴파일시점이 아닌 런타임시점에서 코드가 조립되기 때문이다
그렇기에 Boy.class로 하려면 아래그림처럼 해야한다
오류가 나기때문에 아래그림처럼 pom.xml에 추가를 하면!
잘된다.
하지만 스프링의 기본정책은 런타임시점이기 때문에
디폴트에 맞게 하자
반응형'삼성SDS_멀티캠퍼스 > Spring Frame Work' 카테고리의 다른 글
45일 차 Spring(스프링 프레임워크) AOP 설정을 xml로 하기 (0) 2015.11.11 45일 차 Spring(스프링 프레임워크) AOP 설정을 에노테이션으로 하기 (0) 2015.11.11 45일 차 Spring(스프링 프레임워크) pom.xml 설정 (0) 2015.11.11 44일 차 Spring(스프링 프레임워크) 오늘 배운 것 (0) 2015.11.10 44일 차 Spring(스프링 프레임워크) AOP & 프록시(proxy)2 (0) 2015.11.10