백기선 whiteship2000@gmail.com http://whiteship.tistory.com Advising beans 백기선 whiteship2000@gmail.com http://whiteship.tistory.com www.springframework.co.kr.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

6 장 객체 - 지향 설계 ③. 목차 GUI 레이아웃  전화기 키 패드 전화기 키 패드 전화기 키 패드 모양의 GUI 를 만드는 Telephone.java, TelephonePanel.java 를 완성해 보자.  주석을 참고하여 TelephonePanel.java.
한국 스프링 사용자 모임 ( 1 스프링 AOP 선택, 활용, 이슈 백기선.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
EXEM ( ) LTW를 활용한 데이터 수집기 김경식.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Power Java 제3장 이클립스 사용하기.
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
4강. Servlet 맛보기 Servlet 문서 작성 하기 web.xml에 서블릿 맵핑 어노테이션을 이용한 서블릿 맵핑
최윤정 Java 프로그래밍 클래스 상속 최윤정
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
TDD Junit TDD & Spring Framework 참고자료
MySQL 및 Workbench 설치 데이터 베이스.
JAVA 언어로 배우는 디자인 패턴 입문 chap. 1-2.
백기선 Springing into action 백기선
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
AOP 개념 및 Spring의 AOP 기능.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Lesson 9. 예외처리.
Spring Framework & MyBatis
Java 기초 (Java JDK 설치 및 환경설정)
컴퓨터응용과학부 Java Enterprize(DB) 제 12 주
10강. AOP(Aspect Oriented Programming)-II
9강. AOP(Aspect Oriented Programming)-I
AOP (Aspect Oriented Programming)
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
1. C++ 시작하기.
6강. DI설정 방법 XML파일을 이용한 DI설정 방법 JAVA를 이용한 DI설정 방법 XML과 JAVA를 같이 사용
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
컴퓨터응용과학부 Java Enterprize(DB) 제 15 주
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
자바네트워크 제2주 실습 네트워크기초, 스레드.
10장. 예외처리.
CHAP 12. 리소스와 보안.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
7장 인터페이스와 추상 클래스.
Method & library.
자바 5.0 프로그래밍.
자바응용.
AOP (Aspect Oriented Programing)
전자정부 표준프레임워크 호환성 가이드 전자정부 표준프레임워크 사업단 실행환경 개발팀.
Spring 프레임워크의 이해 2. Spring Introduction.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
MVC 모델을 이용한 웹 애플리케이션 작성 웹 애플리케이션 개발 순서를 알아본다 웹 애플리케이션의 실행 순서를 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
객체지향의 한계를 넘어, AOP 전은영,이재훈 고덕윤.
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
JA A V W. 06.
4. Spring 프레임워크의 AOP 개념.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
STS 에서 웹 서버 설치 방법.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Flow Diagram IV While.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
Spring Introduction.
발표자 : 이지연 Programming Systems Lab.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
Presentation transcript:

백기선 whiteship2000@gmail.com http://whiteship.tistory.com Advising beans 백기선 whiteship2000@gmail.com http://whiteship.tistory.com www.springframework.co.kr

차례 AOP 소개 Classic Spring aspects Autoproxying pure-POJO aspects AspectJ aspects 요약 www.springframework.co.kr

AOP 소개 www.springframework.co.kr

AOP 용어 정리 Advice : 언제 무엇을 할 지 나타냅니다. Joinpoint : Advice를 적용할 수 있는 지점. Pointcut : Joinpoint의 부분집합 Aspect : Advice와 Pointcut을 모아놓은 것 Weaving : Aspect를 적용하는 작업. Introduction : 새로운 메소드 또는 필드 추가. Target : Advice의 대상이 되는 객체. Proxy : Target에 Advice를 적용한 객체. Advisor : 하나의 Advice와 하나의 Pointcut을 합쳐놓은 것 www.springframework.co.kr

AOP 용어 이해하기 Joinpoint www.springframework.co.kr

AOP 용어 이해하기 Pointcut www.springframework.co.kr

AOP 용어 이해하기 Proxy와 Target www.springframework.co.kr

Spring AOP Classic Spring proxy-based AOP @AspectJ annotation-driven aspects Spring 2.0, Java 5 이상에서 사용 가능. Pure-POJO aspects Spring 2.0 이상에서 사용 가능. Injected AspectJ aspects www.springframework.co.kr

Spring AOP의 특징 자바 코드로 작성할 수 있다. Proxy 객체를 사용한다. 오직 메소드 실행 Joinpoint만 지원한다. www.springframework.co.kr

Classic Spring aspects Advice 만들기 Pointcuts 과 Advisor 정의하기 ProxyFactoryBean 사용하기 www.springframework.co.kr

Classic Spring aspects Advice www.springframework.co.kr

Classic Spring aspects Pointcut www.springframework.co.kr

Classic Spring aspects Pointcut org.springframework.aop.support.Perl5Regex pMethodPointcut org.springframework.aop.support.JdkRegexp MethodPointcut AspectJ Pointcut 표현식을 사용한 Pointcut org.springframework.aop.aspectj.AspectJExpr essionPointcut www.springframework.co.kr

Classic Spring aspects Advisor Advice + Pointcut 기본 Advisor org.springframework.aop.support.DefaultPointcutAdvisor 정규 표현식 Pointcut을 직접 입력할 수 있는 Advisor org.springframework.aop.support.RegexpMethodPointcutA dvisor AspectJ Pointcut을 직접 입력할 수 있는 Advisor org.springframework.aop.aspectj.AspectJExpressionPointcut Advisor www.springframework.co.kr

ProxyFactoryBean 사용하기 www.springframework.co.kr

Classic Spring aspects ProxyFactoryBean org.springframework.aop.framework.Pr oxyFactoryBean target interceptorNames proxyInterfaces www.springframework.co.kr

Class Spring aspects 예제 중복되는 코드 발생. 단일 책임 원칙 위배. 코드 가독성 저하. Aspect 사용 후. 보다 객체 지향 적인 방법으로 코딩 가능. 예제 코드 test/chapter4/ClassicSpringAopTest.java www.springframework.co.kr

ProxyFactoryBean 단점 Target 마다 하나 씩 ProxyFactoryBean을 만들어 주어야 합니다. Target bean의 이름을 변경해주어야 합니다. 하지만 이미 Target은 Advisor 또는 Pointcut을 통해서 알 수 있습니다. 그렇다면... Proxy를 알아서 만들 수 있지 않을까요? www.springframework.co.kr

Autoproxying Classic Spring aspects Autoproxying AutoProxyCreator bean 설정하기 @AspectJ aspects Autoproxing <aop:aspectj-autoproxy /> 엘리먼트 등록하기 BeanPostProcessor 구현체로써, 등록되어 있는 bean들의 정보를 바탕으로 Proxy 객체를 자동으로 생성합니다. www.springframework.co.kr

Classic Spring aspects Autoproxying BeanNameAutoProxyCreator beanNames 속성에 설정한 bean들의 Proxy를 생성합니다. AbstractAdvisorAutoProxyCreator AspectJAwareAdvisorAutoProxyCreator @AspectJ 애노테이션이 붙어있는 bean의 Proxy를 생성합니다. DefaultAdvisorAutoProxyCreator Spring Container에 등록되어 있는 Advisor들을 바탕으로 Proxy를 생성합니다. InfrastructureAdvisorAutoProxyCreator Spring이 기본으로 제공하는 Advisor들이 적용되는 Target의 Proxy를 생성합니다. 테스트 용도도 추정. www.springframework.co.kr

Autoproxying @AspectJ aspects aop 네임스페이스 추가. <aop:aspectj-autoproxy /> www.springframework.co.kr

Autoproxing 예제 기본의 코드에서 ProxyFactoryBean 설정 제거 DefaultAdvisorAutoProxyCreator bean 설정하기 @AspectJ aspect 구현 <aop:aspectj-autoproxy /> 사용하기 test/AnnotationAspectTest.java www.springframework.co.kr

Declaring pure-POJO aspects 특정(규약 역할을 하는) 클래스를 상속받으면 안 된다. public class Foo extends javax.servlet.http.HttpServlet{ … 특정 (규약 역할을 하는) 인터페이스를 구현하면 안 된다. public class Bar implements javax.ejb.EntityBean{ … 특정 (규약 역할을 하는) 애노테이션을 붙이면 안 된다. @javax.ejb.Entity public class Baz{ … www.springframework.co.kr

POJO Aspect 구현하기 별다른 설명이 필요 한가요? POJO를 Aspect로 사용하는 마술은 bean 설정에서 이루어 집니다. <aop> 네임스페이스를 공부해야 할 시간이 왔습니다. www.springframework.co.kr

aop 네임스페이스 www.springframework.co.kr

POJO Aspect 선언하기 www.springframework.co.kr

POJO Aspect 예제 POJO Aspect 구현(Audience.java) 구현한 클레스를 bean으로 등록 aop 네임스페이스로 Aspect 정의 test/PojoAspectTest.java www.springframework.co.kr

AspectJ 장점 단점 다양한 Joinpoint 지원. 다양한 Pointcut 표현식 지원. 별도의 문법을 익혀야 함. 별도의 컴파일 과정이 필요함. www.springframework.co.kr

AspectJ 예제 AspectJ Asepct 만들기 bean으로 등록하기 AJDT로 컴파일하기 www.springframework.co.kr

Summary AOP는 객체 지향 프로그래밍을 보완하는 강력한 도구이다. Spring provides an AOP framework that lets you insert aspects around method executions. You have several choices in how you can use aspects in your Spring applications. Finally, there are times when Spring AOP isn’t powerful enough and you must turn to AspectJ for more powerful aspects. www.springframework.co.kr

발표 후, 질문 및 Comment 양철근 : 참 좋았어요. 같은 Advice의 적용 순서. 최한수 : 졸려~ X 2 김계옥 : 갈수록 발표 능력이 좋아져. 설명과 예제의 조화, 졸릴 때 질문 귿. 심미혜 : 약간 빠르다. 네 이상. www.springframework.co.kr