9강. AOP(Aspect Oriented Programming)-I

Slides:



Advertisements
Similar presentations
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
Advertisements

4강. Servlet 맛보기 Servlet 문서 작성 하기 web.xml에 서블릿 맵핑 어노테이션을 이용한 서블릿 맵핑
5강. Servlet 본격적으로 살펴보기-I 프로젝트 만들기 doGet() doPost()
31강 JAVA 네트워크 JAVA 네트워크 InetAdress, URLConnection 클래스 Socket의 이해
10강. AOP(Aspect Oriented Programming)-II
AOP (Aspect Oriented Programming)
25강. Security-I 보안 관련 프로젝트 생성 보안 관련 라이브러리 추가 보안 관련 설정 파일 만들기
6강. DI설정 방법 XML파일을 이용한 DI설정 방법 JAVA를 이용한 DI설정 방법 XML과 JAVA를 같이 사용
5강. DI활용 의존 관계 DI사용에 따른 장점 Lecturer Kim Myoung-Ho Nickname 블스
29강. MVC패턴을 이용한 게시판 만들기-III
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
22강. 파일 업로드 - 파일 업로드 라이브러리 설치 - 파일 업로드 프로그래밍 Lecturer Kim Myoung-Ho
12강. 액션태그 액션태그란? forward, include, param 태그 살펴보기
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
9강. JSP 본격적으로 살펴보기-I JSP 태그의 개념 이해 JSP 동작 원리 JSP 내부 객체
6강. Servlet 본격적으로 살펴보기-II
16강. 추상클래스 - III - 자동차 옵션 제작 프로그래밍 Lecturer Kim Myoung-Ho Nickname 블스
25강 예외처리 - 예외란? - 예외처리의 필요성 - 예외처리 문법 (try ~ catch) - 예외처리 문법 (throws)
3강_HTML 기본-II 리스트 태그 - ul,li,ol 표를 나타내는 태그 - table 이미지를 출력하는 태그 – img
26강. 포워딩(Forwarding) RequestDispatcher 클래스 HttpServletResponse 클래스
19강. 데이터 베이스 - III 회원가입 및 회원정보 수정 프로그래밍 Lecturer Kim Myoung-Ho
28강_맵(Map) 맵을 이용하기 위한 설정 위치 추적 Lecturer Kim Myoung-Ho Nickname 블스
11강. 스프링 MVC 기초 스프링 MVC 개요 스프링 MVC 구조 살펴보기 resources 폴더
2강. 스프링 프로젝트 만들기 이클립스에 스프링 프로그인 설치(STS) 처음 만들어 보는 스프링 프로젝트
25강. FrontController 패턴과 Command 패턴
26강_CSS3 규칙 CSS파일 규칙 Lecturer Kim Myoung-Ho
23강. 트랜잭션(Transaction)-II
3강. JSP 맛보기 JSP 문서 작성 하기 JSP 아키텍처 Lecturer Kim Myoung-Ho Nickname 블스
24강 API - III - Timer 클래스 - StringTokenizer 클래스 Lecturer Kim Myoung-Ho
15강. 예외 페이지 예외 페이지의 필요성 page 지시자를 이용한 예외 처리 web.xml파일을 이용한 예외 처리
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
10강_CSS 속성-I CSS3 단위 url() display 속성 visibility 속성 opacity 속성
17강_스마트폰 레이아웃-I viewport header 제작 네비 제작 Lecturer Kim Myoung-Ho
15강. 추상클래스 - II - 어린이집 아이들의 식대 계산 프로그래밍 Lecturer Kim Myoung-Ho
8강. 외부 파일을 이용한 설정 Environment 객체 프로퍼티 파일을 이용한 설정
14강. 추상클래스 - I - 추상클래스의 이해 - 추상클래스가 필요한 이유 - 추상클래스의 문법
30강 JAVA 그래픽 JAVA GUI(Graphic User Interface)란? AWT 컴포넌트? Swing 컴포넌트?
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
7강_CSS 기본-II id(#) 와 class(.) tag,id, class 혼합 속성 선택자 후손 및 자손 선택자
Spring 프레임워크의 이해 2. Spring Introduction.
11강_CSS 속성-II margin 및 padding 속성 box-sizing 속성 border 속성
12강_CSS 속성-III font-family , font-size 속성
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
6강. 객체지향 프로그램의 시작 객체지향 이전의 프로그래밍 객체지향의 등장 배경과 이해 메소드의 이해
2강_첫번째 안드로이드 프로젝트 에뮬레이터(AVD) 만들기 처음 만들어 보는 프로젝트 전체적인 구성 살펴보기
백기선 Advising beans 백기선
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
3강_레이아웃-I 화면구성 요소 뷰에 대한 이해 LinearLayout Lecturer Kim Myoung-Ho
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
7강. 객체지향 프로그램의 본질 메소드 프로그래밍의 한계 객체의 개념 및 클래스의 이해
17강. 스프링MVC 게시판-II 패키지, 인터페이스, 클래스 제작 Controller 제작 리스트 페이지 만들기
26강 JAVA Collections - I - 컬렉션이란? - JAVA도 결국 효과적인 데이터를 처리하기 위한 수단
20강 패턴을 통한 객체지향 언어의 이해 - II - 난이도 있는 패턴 예제 - I Lecturer Kim Myoung-Ho
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
13강. Form 데이터 HttpServletRequest 어노테이션 데이터(커맨드) 객체
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
27강_데이터베이스 SQLite CP(Content Provider) Lecturer Kim Myoung-Ho
4. Spring 프레임워크의 AOP 개념.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
22강. 트랜잭션(Transaction)-I
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
7강. 생명 주기(life cycle) 와 범위(scope)
Spring Introduction.
12 그리드 시스템.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
12강. 상속 - I - 상속! 어렵지 않아요. 일상에서 알고 있는 상속 입니다. - 상속이 필요한 이유 - 상속 문법의 이해
15강_액티비티 액티비티란? 새로운 액티비티로 전환 생명주기 화면방향(Orientation)
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
11강. static - static의 이해 - static과 객체와의 관계 - static의 장점과 단점
Presentation transcript:

9강. AOP(Aspect Oriented Programming)-I XML기반의 AOP구현 Lecturer Kim Myoung-Ho Nickname 블스 blogstudy@naver.com

물을 받고 눈으로 판단 쌀을 씻고 깨끗한 물을 적당히 넣고 전자밥솥에 내솥을 넣고 취사 버튼 누름 9-1. AOP란? 프로그래밍을 하다 보면, 공통적인 기능이 많이 발생 합니다. 이러한 공통 기능을 모든 모듈에 적용하기 위한 방법으로 상속을 통한 방법이 있습니다. 상속도 좋은 방법이기는 하지만 몇 가지 문제가 있습니다.우선 JAVA에서는 다중 상속이 불가하므로 다양한 모듈에 상속기법을 통한 공통 기능 부여는 한계가 있습니다. 그리고, 기능 구현부분에 핵심 기능 코드와 공통 기능 코드가 섞여 있어 효율성이 떨어집니다. 위의 상속을 통한 방법에 한계가 있어 AOP가 등장하게 되었습니다. AOP방법은 핵심 기능과 공통 기능을 분리 시켜놓고, 공통 기능을 필요로 하는 핵심 기능들에서 사용하는 방식 입니다. 쉽게 생각해서 아침에 밥을 짓는다고 생각해 봅니다. 핵심 기능은 쌀을 씻고, 깨끗한 물을 적당히 넣고, 전자밥솥에 내솥을 넣고, 취사 버튼을 누르는 기능들 일 것입니다 공통 기능은 수도 꼭지를 열어 물을 받고, 쌀이 깨끗이 씻겼는지 눈으로 판단하고, 물을 적당한지 판단하는 기능들 일 것입니다. 이러한 기능이 공통 기능인 것은 밥을 짓는 행동이 아닐 때도 우리는 수도 꼭지를 열고, 눈으로 사물을 보고 적절한 판단을 하기 때문에 공통 기능이라고 하였습니다. 어쨌든, 이렇게 핵심 기능과 공통 기능을 분리해 놓고, 추후에 밥을 짓는 행동 말고 팥을 쑬 때도 핵심 기능은 변화지만, 공통 기능은 다시 적용할 수 있을 것입니다. AOP 기법이 바로 이러한 것입니다. 공통 기능을 핵심 기능과 분리해 놓고, 공통 기능 중에서 핵심 기능에 적용하고자 하는 부분에 적용하는 것입니다. 공통 기능 물을 받고 눈으로 판단 핵심 기능 쌀을 씻고 깨끗한 물을 적당히 넣고 전자밥솥에 내솥을 넣고 취사 버튼 누름

호출부 (client) Proxy (대행) Target (핵심기능) 9-1. AOP란? - Aspect : 공통 기능 - Advice : Aspect의 기능 자체 - Jointpoint : Advice를 적용해야 되는 부분( ex, 필드, 메소드 ) (스프링에서는 메소드만 해당) - Pointcut : Jointpoint의 부분으로 실제로 Advice가 적용된 부분 - Weaving : Advice를 핵심 기능에 적용 하는 행위 스프링에서 AOP 구현 방법 : proxy를 이용 합니다. 호출부 (client) Proxy (대행) Target (핵심기능) 스프링에서 AOP 구현 방식 - XML 스키마 기반의 AOP구현 - @Aspect 어노테이션 기반의 AOP 구현

9-2. XML 기반의 AOP구현 작업 순서 (spring_9_2_ex1_springex) 1) 의존 설정(pom.xml) 2) 공통 기능의 클래스 제작 – Advice 역할 클래스 3) XML설정 파일에 Aspect 설정 의존 설정 공통 기능 클래스 XML파일 설정

9-2. XML 기반의 AOP구현 Advice 종류 (spring_9_2_ex2_springex) <aop:before> : 메소드 실행 전에 advice실행 <aop:after-returning> : 정상적으로 메소드 실행 후에 advice실행 <aop:after-throwing> : 메소드 실행중 exception 발생시 advice실행 <aop:after> : 메소드 실행중 exception 이 발생하여도 advice실행 <aop:around> : 메서드 실행 전/후 및 exception 발생시 advice실행