일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- JSP
- JSP-서블릿
- #데이터 베이스
- 스프링 데이터베이스
- srping 데이터베이스연동
- 스프링
- #스프링 셋팅
- 스프링 생성자
- #Java
- 스프링 의존성주입
- 스프링 autowired
- #JSP
- 스프링 의존성
- Spring
- #출처는 페이스북
- 스프링 DB연동
- 데이터베이스연동
- 스프링 데이터베이스연동
- AOP-관점지향 프로그래밍(Aspect Oriented Programming)
- 스프링 팩토리
- 스프링 mybatiis
- 스프링 NamedParameterJDBCTemplate
- #인테리어
- 스프링 setter
- predestory
- AOP-관점지향프로그래밍
- 스프링 마이바티스
- 관점지향 프로그래밍
- 스프링 마이바티스연동
- spring mybatis연동
- Today
- Total
재미있게 코딩합시다
AOP-관점지향 프로그래밍(Aspect Oriented Programming) 본문
AOP-관점지향 프로그래밍(Aspect Oriented Programming)
어떤 기능을 구현하기 위한 세부기능들을 분리하고, 각 세부기능 중에
특정 기능을 위해 필요한 세부기능을 == 핵심관심사항
여러 기능구현에 필요한 세부기능들을 == 공통관심사항이라고 정의.
세부기능들을 핵심관심사항과, 공통관심사항으로 분리해서
공통관심사항으로 이뤄진 프레임에 핵심관심사항을
조립해서 기능구현을 달성하는 기능.
- 핵심관심사항에 공통관심사항을 어떻게 적용시킬 것인가
=> AOP
Spring AOP 용어
• Target
– 핵심사항( Core) 가 구현된 객체
• JoinPoint
– 공통관심사항이 적용 될 수 있는 지점(ex:메소드 호출시, 객체생성시 등)
• Pointcut
– JoinPoint 중 실제 공통사항이 적용될 대상을 지정.
• Advice
– 공통관심사항(Cross-Cutting) 구현 코드 + 적용시점.
– 적용 시점 : 핵심로직 실행 전, 후, 정상 종료 후, 비정상 종료 후, 전/후가 있다.
• Aspect
– Advice + Pointcut = 언제 + 누구에게
– Aspect = 실제 공통사항이 적용될 대상을 지정하고 구현코드를이용해서 적용한다.
• Weaving
– Proxy를 생성하는 것. (컴파일 시점, Class Loading 시점, 런타임 시점 Weaving이 있다.)
• AOP 설정 태그
1.
advice 설정 태그들
프록시객체 : 내가 수행할 기능을 대신 수행해주는 객체.
오리지널객체 : 내가 수행할 기능을 구현하는 클래스 객체
프록시패턴 구현 :
오리지널 객체가 수행할 기능에 대한 껍데기를 인터페이스로 정의하고 구현
오리지널 객체가 구현한 인터페이스를 프록시 객체도 구현
프록시 객체의 구현함수에서 오리지널객체의 구현함수를 호출
BOY Class, Girl Class , IPerson Class , Person Class , Test Class 구현
public class Boy implements IPerson{ @Override public void doSomething() { System.out.println("컴퓨터를키고 게임을 한다."); }
public class Girl implements IPerson{ @Override public void doSomething() { System.out.println("책을 펴고 책을 본다."); } }
public class Girl implements IPerson{ @Override public void doSomething() { System.out.println("책을 펴고 책을 본다."); } }
public class PersonProxy implements IPerson{ IPerson person; public void setPerspon(IPerson perspon) { this.person = perspon; } @Override public void doSomething() { System.out.println("문을 열고 집에 들어간다."); try { person.doSomething(); System.out.println("불을 끄고 잠을잔다."); } catch (Exception e) { System.out.println("119에 신고를한다."); }System.out.println("문을 열고 집을 나온다."); } }
public class Test { public static void main(String[] args) { IPerson person = new Girl(); PersonProxy personProxy = new PersonProxy(); personProxy.setPerspon(person); personProxy.doSomething(); //프록시 객체 : personProxy //오리지널 객체 : Girl } }
'IT > Spring(스프링)' 카테고리의 다른 글
MVC (0) | 2019.01.14 |
---|---|
Mybatis - Spring 연동하기 (0) | 2019.01.09 |
스프링 - mybatis (마이바티스) (0) | 2019.01.07 |
4.스프링(Spring)-NamedParameterJDBCTemplate (0) | 2019.01.04 |
3. 스프링(Spring) - 데이터베이스와의 연동 (0) | 2019.01.04 |