SlideShare a Scribd company logo
1 of 12
Download to read offline
Spring AOP
HelloWorld
XML SCHEMA BASED AOP 구현
탑크리에듀(www.topcredu.co.kr), 이종철
소스코드 및 동영상 보기는 아래 URL에
서 가능 합니다.
http://ojc.asia
AOP HelloWorld - 1
 File -> New -> Spring Legacy Project -> Simple Spring Maven 선택 후 프로젝트명
을 “aophello1” 이라고 입력 후 “Finish” 클릭
 단순히 "Hello AOP1..." "Hello AOP2..." 이라고 출력하는 PrintMsg 클래스의 메소드
sayHello1(), sayHello2()가 있고 이 클래스에 주변충고(어라운드 어드바이스, Around
Advice)를 추가해 sayHello1() 메소드에만 실행 전/후 필요한 기능("메소드 실행전 안
녕...", "메소드 실행후 안녕...")을 출력하고자 한다.
 스프링에서 제공하는 aop Namespace를 이용하는 방법으로 타겟클래스의
sayHello1(), sayHello2() 메소드중 sayHello1() 메소드만 주변충고가 적용되도록 구성
한 예제이다.
www.topcredu.co.kr
AOP HelloWorld - 2
 pom.xml에 XML Schema Based AOP를 위한 의존성을 추가한다.
<!-- Spring AOP + AspectJ -->
<dependency>
<groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
www.topcredu.co.kr
AOP HelloWorld - 3
 [IPrintMsg.java]
package aophello1;
public interface IPrintMsg {
public void sayHello1(); public void sayHello2();
}
 [PrintMsg.java] 타겟 클래스(충고가 적용될 클래스)
package aophello1;
public class PrintMsg implements IPrintMsg {
public void sayHello1() { System.out.println("Hello AOP1..."); }
public void sayHello2() { System.out.println("Hello AOP2..."); }
}
www.topcredu.co.kr
AOP HelloWorld - 4
 [LoggingAspect.java]
 XML Schema Based AOP 구현에서는 Aspect클래스에 충고용 메소드를 정의한다.
 아래 myAdvice가 주변충고용 메소드로 XML에서 설정을 한다.
 pjp.procees() 메소드를 통해 원해 타겟클래스의 sayHello1() 메소드가 호출된다.
package aophello1;
import org.aspectj.lang.ProceedingJoinPoint;
www.topcredu.co.kr
AOP HelloWorld – 4 Cont
public class LoggingAspect {
public void myAdvice(ProceedingJoinPoint pjp)
throws Throwable{
System.out.println("메소드 실행전 안녕..."); //메소드 실행전
Object ret = pjp.proceed();
System.out.println("메소드 실행후 안녕..."); //메소드 실행후
}
}
www.topcredu.co.kr
AOP HelloWorld – 5
 [src/main/resources/aophello1.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-4.1.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop-4.1.xsd ">
www.topcredu.co.kr
AOP HelloWorld – 5 Cont
<aop:config> <!-- ref에는 충고를 담고있는 Aspect가 온다 
<aop:aspect id="helloAspect" ref="logging">
<aop:pointcut id="selectSayHello1"
expression="execution(* aophello1.PrintMsg.sayHello1(..))"/>
<!—myAdvice는 Aspect 클래스(logging)의 충고용 메소드-->
<aop:around pointcut-ref="selectSayHello1" method="myAdvice"/>
</aop:aspect> </aop:config>
<!-- Definition for printMsg bean, 타겟클래스 -->
<bean id="printMsg" class="aophello1.PrintMsg" />
<!-- Definition for logging aspect 충고들이 오여있는 Aspect클래스-->
<bean id="logging" class="aophello1.LoggingAspect"/> </beans>
www.topcredu.co.kr
AOP HelloWorld – 6
 [HelloMain.java]
package aophello1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class HelloMain {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("aophello1.xml")
IPrintMsg printMsg = (IPrintMsg) ctx.getBean("printMsg");
//sayHello1만 충고가 내려가도록 되어 있다.
printMsg.sayHello1(); printMsg.sayHello2();
}
}
www.topcredu.co.kr
실행 결과
메소드 실행전 안녕...
Hello AOP1...
메소드 실행후 안녕...
Hello AOP2...
www.topcredu.co.kr
This practice makes the Expert!
http://topcredu.co.kr

More Related Content

What's hot

What's hot (12)

(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
 
스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice
스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice
스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
 
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 

Similar to Spring AOP 구현/XML Schema 기반,XML Schema Based Helloworld

Implementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4UImplementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4U
sys4u
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
SeongHyun Ahn
 

Similar to Spring AOP 구현/XML Schema 기반,XML Schema Based Helloworld (11)

Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
 
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...
 
Implementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4UImplementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4U
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Source
 
PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
Eclipse RCP 1/2
Eclipse RCP 1/2Eclipse RCP 1/2
Eclipse RCP 1/2
 
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
 
EcmaScript6(2015) Overview
EcmaScript6(2015) OverviewEcmaScript6(2015) Overview
EcmaScript6(2015) Overview
 
5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)
 

Spring AOP 구현/XML Schema 기반,XML Schema Based Helloworld

  • 1. Spring AOP HelloWorld XML SCHEMA BASED AOP 구현 탑크리에듀(www.topcredu.co.kr), 이종철
  • 2. 소스코드 및 동영상 보기는 아래 URL에 서 가능 합니다. http://ojc.asia
  • 3. AOP HelloWorld - 1  File -> New -> Spring Legacy Project -> Simple Spring Maven 선택 후 프로젝트명 을 “aophello1” 이라고 입력 후 “Finish” 클릭  단순히 "Hello AOP1..." "Hello AOP2..." 이라고 출력하는 PrintMsg 클래스의 메소드 sayHello1(), sayHello2()가 있고 이 클래스에 주변충고(어라운드 어드바이스, Around Advice)를 추가해 sayHello1() 메소드에만 실행 전/후 필요한 기능("메소드 실행전 안 녕...", "메소드 실행후 안녕...")을 출력하고자 한다.  스프링에서 제공하는 aop Namespace를 이용하는 방법으로 타겟클래스의 sayHello1(), sayHello2() 메소드중 sayHello1() 메소드만 주변충고가 적용되도록 구성 한 예제이다. www.topcredu.co.kr
  • 4. AOP HelloWorld - 2  pom.xml에 XML Schema Based AOP를 위한 의존성을 추가한다. <!-- Spring AOP + AspectJ --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring-framework.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.6.11</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.11</version> </dependency> www.topcredu.co.kr
  • 5. AOP HelloWorld - 3  [IPrintMsg.java] package aophello1; public interface IPrintMsg { public void sayHello1(); public void sayHello2(); }  [PrintMsg.java] 타겟 클래스(충고가 적용될 클래스) package aophello1; public class PrintMsg implements IPrintMsg { public void sayHello1() { System.out.println("Hello AOP1..."); } public void sayHello2() { System.out.println("Hello AOP2..."); } } www.topcredu.co.kr
  • 6. AOP HelloWorld - 4  [LoggingAspect.java]  XML Schema Based AOP 구현에서는 Aspect클래스에 충고용 메소드를 정의한다.  아래 myAdvice가 주변충고용 메소드로 XML에서 설정을 한다.  pjp.procees() 메소드를 통해 원해 타겟클래스의 sayHello1() 메소드가 호출된다. package aophello1; import org.aspectj.lang.ProceedingJoinPoint; www.topcredu.co.kr
  • 7. AOP HelloWorld – 4 Cont public class LoggingAspect { public void myAdvice(ProceedingJoinPoint pjp) throws Throwable{ System.out.println("메소드 실행전 안녕..."); //메소드 실행전 Object ret = pjp.proceed(); System.out.println("메소드 실행후 안녕..."); //메소드 실행후 } } www.topcredu.co.kr
  • 8. AOP HelloWorld – 5  [src/main/resources/aophello1.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-4.1.xsd  http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-4.1.xsd "> www.topcredu.co.kr
  • 9. AOP HelloWorld – 5 Cont <aop:config> <!-- ref에는 충고를 담고있는 Aspect가 온다  <aop:aspect id="helloAspect" ref="logging"> <aop:pointcut id="selectSayHello1" expression="execution(* aophello1.PrintMsg.sayHello1(..))"/> <!—myAdvice는 Aspect 클래스(logging)의 충고용 메소드--> <aop:around pointcut-ref="selectSayHello1" method="myAdvice"/> </aop:aspect> </aop:config> <!-- Definition for printMsg bean, 타겟클래스 --> <bean id="printMsg" class="aophello1.PrintMsg" /> <!-- Definition for logging aspect 충고들이 오여있는 Aspect클래스--> <bean id="logging" class="aophello1.LoggingAspect"/> </beans> www.topcredu.co.kr
  • 10. AOP HelloWorld – 6  [HelloMain.java] package aophello1; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class HelloMain { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("aophello1.xml") IPrintMsg printMsg = (IPrintMsg) ctx.getBean("printMsg"); //sayHello1만 충고가 내려가도록 되어 있다. printMsg.sayHello1(); printMsg.sayHello2(); } } www.topcredu.co.kr
  • 11. 실행 결과 메소드 실행전 안녕... Hello AOP1... 메소드 실행후 안녕... Hello AOP2... www.topcredu.co.kr
  • 12. This practice makes the Expert! http://topcredu.co.kr