반응형
교재 P157-
Joinpoint & Pointcut
기존의 applicationContext.xml 에서 코드 추가
* applicationContext.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:context="http://www.springframework.org/schema/context"
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/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd">
<context:component-scan base-package="com.heidi.biz"></context:component-scan>
<bean id="log" class="com.heidi.biz.board.common.LogAdvice"></bean>
<aop:config>
<aop:pointcut expression="execution(* com.heidi.biz..*Impl.*(..))" id="allPointcut"/>
<aop:pointcut expression="execution(* com.heidi.biz..*Impl.get*(..))" id="getPointcut"/>
<aop:aspect ref="log">
<aop:before method="printLog" pointcut-ref="getPointcut" />
</aop:aspect>
</aop:config>
</beans>
* BoardServiceClient.java
메인클래스 실행
실행 결과
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml]
INFO : org.springframework.context.support.GenericXmlApplicationContext - Refreshing org.springframework.context.support.GenericXmlApplicationContext@7dc5e7b4: startup date [Mon Oct 12 10:09:48 KST 2020]; root of context hierarchy
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
==> JDBC로 insertBoard() 기능 처리
[공통로그] 비즈니스 로직 수행 전 동작
==> JDBC로 getBoardList() 기능 처리
==> BoardVO [seq=11, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=10, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=9, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=8, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=7, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=6, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=5, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=4, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=3, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=2, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-08, cnt=0]
==> BoardVO [seq=1, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-07, cnt=0]
INFO : org.springframework.context.support.GenericXmlApplicationContext - Closing org.springframework.context.support.GenericXmlApplicationContext@7dc5e7b4: startup date [Mon Oct 12 10:09:48 KST 2020]; root of context hierarchy
applicationContext.xml 문서의 코드에서,
<aop:config> 태그 내부의 <aop:aspect ~> 태그의, <aop:before ~> 태그에서,
pointcut-ref="getPointcut" 을 통해서 관점을 getPointcut 로 바꿔놨기 때문에,
get~ 메서드 호출 직전에만 Log값이 찍히는걸 확인할 수 있다.
이번엔 applicationContext.xml 에서,
<aop:aspect> 태그 내의 <aop:before ~> 태그를 <aop:after ~> 태그로 바꾸고 실행해보면,
* applicationContext.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:context="http://www.springframework.org/schema/context"
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/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd">
<context:component-scan base-package="com.heidi.biz"></context:component-scan>
<bean id="log" class="com.heidi.biz.board.common.LogAdvice"></bean>
<aop:config>
<aop:pointcut expression="execution(* com.heidi.biz..*Impl.*(..))" id="allPointcut"/>
<aop:pointcut expression="execution(* com.heidi.biz..*Impl.get*(..))" id="getPointcut"/>
<aop:aspect ref="log">
<aop:after method="printLog" pointcut-ref="getPointcut" />
</aop:aspect>
</aop:config>
</beans>
실행 결과
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml]
INFO : org.springframework.context.support.GenericXmlApplicationContext - Refreshing org.springframework.context.support.GenericXmlApplicationContext@7dc5e7b4: startup date [Mon Oct 12 10:12:48 KST 2020]; root of context hierarchy
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
==> JDBC로 insertBoard() 기능 처리
==> JDBC로 getBoardList() 기능 처리
[공통로그] 비즈니스 로직 수행 전 동작
==> BoardVO [seq=12, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=11, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=10, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=9, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=8, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=7, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=6, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=5, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=4, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=3, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-12, cnt=0]
==> BoardVO [seq=2, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-08, cnt=0]
==> BoardVO [seq=1, title=임시 제목, writer=전소현, content=임시내용, regDate=2020-10-07, cnt=0]
INFO : org.springframework.context.support.GenericXmlApplicationContext - Closing org.springframework.context.support.GenericXmlApplicationContext@7dc5e7b4: startup date [Mon Oct 12 10:12:48 KST 2020]; root of context hierarchy
get~ 메서드 호출 직후, 로그가 찍히는걸 콘솔창에서 확인할 수 있다.
반응형
'Java . Spring . Web . SQL' 카테고리의 다른 글
[IoC] 어노테이션 (Annotation) (0) | 2020.10.13 |
---|---|
스프링 AOP :: 어드바이스 동작 시점 (0) | 2020.10.12 |
스프링 AOP 이해하기 - Basic (0) | 2020.10.12 |
JS 로 구현하는 간단한 끝말잇기 (0) | 2020.10.11 |
JS 기본 (0) | 2020.10.11 |
댓글