untitled

Similar documents
untitled

臺灣地區的警察教育現況與展望

了 立 連 立 量 領 來 例 蘭 便 不 數 不 論 更 更 更 力 更 參 例 來 例 見 量 度 量 量 參 論 量 行 量 量 瑩 理 來 錄 量 量 不 力 省 力 立 力 量 量 量 了 量 便 錄 錄 錄 料 說 省 6

1

untitled

untitled

untitled

untitled

I/O Files讀寫檔案:

九十三年第三期檔案管理工作研習營學員建議事項答覆情形彙整表

untitled

untitled

untitled

公立學校教職員成績考核辦法修正草案總說明

第五章 鄉鎮圖書館閱讀推廣活動之分析

untitled

untitled

PowerPoint 簡報

untitled

地方公共服務績效比較評量之探討—標竿學習策略的觀點

個人教室 / 網路硬碟

untitled

untitled

untitled

untitled

公務出國報告

untitled

untitled

untitled

untitled

untitled

untitled

untitled

untitled

untitled

untitled

國立自然科學博物館館訊第263期

untitled

untitled

untitled

untitled

隱形眼鏡的世界

untitled

血管內裝置感染管制作業規範

untitled

untitled

untitled

untitled

Slide 1

移民資料

untitled

untitled

untitled

國立政治大學新研所碩士在職專班

untitled

untitled

我最大的一次震驚,來自於不同區域客家人 客家人是邊陲


untitled

untitled

untitled

費協會第152次會議

廉 樂 不 廉 倫 理 廉 倫 理 領 不 參 領 不 若 不 不 不 不 利 聯 行 李 聯 例 律

育儿的简单规则

untitled

如何去除食物的農藥

untitled

untitled

見 例 年 例 利 不 料 林 不 立 理 不 念 類 理 利 了 路 來 行 來 行 立 見不 立 亂 不 理 立 來 2

untitled

龍華科技大學

個人提供土地與建設公司合建分屋並出售合建分得之房屋,核屬營業稅法規定應課徵營業稅之範圍,自本函發布日起,經建築主管機關核發建造執照之合建分屋案件,附符合說明二之規定者外,均應辦理營業登記,課徵營業稅及營利事業所得稅

untitled

國立故宮博物院九十三年提升服務品質績效報告

人身保險業務員資格測驗方案

untitled

untitled

untitled

影響閱讀與記憶的因素

untitled

第一章 緒論

untitled

篇名

untitled

untitled

第一章 緒論

untitled

我國警察教育制度之檢討與策進

中華人民共和國殘疾人保障法(2008年修訂)

擴大國內需求方案─創造城鄉新風貌計畫

拾壹、技術運用之蔬果預冷

性別主流化簡介

第一章 導論

第十四章 警察與少年(P )

電腦組裝訓練

untitled

untitled

untitled

untitled

untitled

Transcription:

4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker { private Logger logger = Logger.getLogger(this.getClass().getName()); public void hello(string name) { // 行 留 錄 logger.log(level.info, "hello method starts..."); // System.out.println("Hello, " + name); // 行 留 錄 logger.log(level.info, "hello method ends..."); 1

HelloSpeaker 類 行 hello() 行 行 留 錄 行 錄 錄 行 切 Cross-cutting HelloSpeaker 類 HelloSpeaker 來說 錄 不 HelloSpeaker 邏 "Hello" HelloSpeaker 了 錄 錄 錄 度 Service 不 錄 了 例 理 更 了 不 若 不 錄 理 留 錄 理 Proxy 來 論兩 理 理 Static proxy 理 Dynamic proxy 理 理 理 理 理 錄 理 理 留 例 來說 IHello StaticProxyDemo IHello.java public interface IHello { 2

public void hello(string name); 邏 HelloSpeaker 類 IHello 例 StaticProxyDemo HelloSpeaker.java public class HelloSpeaker implements IHello { public void hello(string name) { System.out.println("Hello, " + name); HelloSpeaker 類 錄 錄 理 理 IHello 例 StaticProxyDemo HelloProxy.java import java.util.logging.*; public class HelloProxy implements IHello { private Logger logger = Logger.getLogger(this.getClass().getName()); private IHello helloobject; public HelloProxy(IHello helloobject) { this.helloobject = helloobject; public void hello(string name) { // 錄 log("hello method starts..."); 3

// 行 邏 helloobject.hello(name); // 錄 log("hello method ends..."); private void log(string msg) { logger.log(level.info, msg); HelloProxy 類 hello() 邏 錄 來 理 StaticProxyDemo ProxyDemo.java public class ProxyDemo { public static void main(string[] args) { HelloProxy proxy = new HelloProxy(new HelloSpeaker()); proxy.hello("justin"); 行 理 理 理 理 IHello 來 行 4.1 StaticProxyDemo 行 J031 4

理 HelloProxy 理 HelloSpeaker 來 行 hello() 錄 HelloSpeaker 不 錄 HelloSpeaker 來更 理 流 4.2 理 流 J032 理 例 理 類 理 行 理 理 理 了 理 理 理 JDK 1.3 了 理 API 類 不 理 理 理 Handler 理 類 java.lang.reflect.invocationhandler 例來 行說 例 LogHandler 類 DynamicProxyDemo LogHandler.java import java.util.logging.*; import java.lang.reflect.*; 5

public class LogHandler implements InvocationHandler { private Logger logger = Logger.getLogger(this.getClass().getName()); private Object delegate; public Object bind(object delegate) { this.delegate = delegate; return Proxy.newProxyInstance( delegate.getclass().getclassloader(), delegate.getclass().getinterfaces(), this); public Object invoke(object proxy, Method method, Object[] args) throws Throwable { Object result = null; try { log("method starts..." + method); result = method.invoke(delegate, args); logger.log(level.info, "method ends..." + method); catch (Exception e){ log(e.tostring()); return result; private void log(string message) { logger.log(level.info, message); 6

念 Proxy.newProxyInstance() 立 理 立 理 理 立 理 InvocationHandler invoke() invoke() 理 行參數 行 method.invoke() method.invoke() 錄 method.invoke() 行 理 理 例 DynamicProxyDemo IHello.java public interface IHello { public void hello(string name); 邏 HelloSpeaker 類 IHello 例 DynamicProxyDemo HelloSpeaker.java public class HelloSpeaker implements IHello { public void hello(string name) { System.out.println("Hello, " + name); 了 StaticProxyDemo IHello HelloSpeaker 來 了 例 來 LogHandler bind() 來 理 DynamicProxyDemo ProxyDemo.java public class ProxyDemo { 7

public static void main(string[] args) { LogHandler loghandler = new LogHandler(); IHello helloproxy = (IHello) loghandler.bind(new HelloSpeaker()); helloproxy.hello("justin"); 來 行 J033 4.3 DynamicProxyDemo 行 LogHandler 不 HelloSpeaker 不 錄 不 識 錄 AOP 例 AOP 例 HelloSpeaker 錄 Log HelloSpeaker AOP 來說 錄 切 Cross-cutting HelloSpeaker 行流 錄 AOP 切 切 Cross-cutting concern 理 錄 邏 來 例 HelloProxy LogHandler 切 Aspect AOP Aspect 錄 類 Cross-cutting concerns 不 Aspect 8

Aspect-oriented programming AOP Aspect 立 不 Aspect 離 不 行 良 AOP 來 AOP 來 留 更令 4.1.2AOP 念 AOP Aspect-Oriented Programming AOP 不 易理 理 例來 AOP 念 Cross-cutting concern DynamicProxyDemo 例 錄 切 Cross-cutting HelloSpeaker 流 類 錄 類 Security Transaction Service 見 理流 AOP Cross-cutting concerns 說 Cross-cutting concerns 例 來 流 9

J034 4.4 AOP 了 錄 Logging Security 若 Logging Security Cross-cutting Cross-cutting concerns 念 4.5 AOP J035 Cross-cutting concerns 若 流 例 若 錄 錄 Cross-cutting concerns 邏 邏 更 Aspect 落 Cross-cutting concerns 來 立 Aspect 例 DynamicProxyDemo 錄 10

LogHandler 類 LogHandler 類 AOP Aspect 例 AOP Aspect 流 立 來 Weave 不 離 不 例 DynamicProxyDemo HelloSpeaker 錄 不 來說 AOP 不 理 說 API 不 不 了 Advice Aspect Advice 錄 Advice 錄 DynamicProxyDemo LogHandler 類 Advice 例 Advice 了 Cross-cutting concerns 行 Joinpoint Aspect 行 流 Joinpoint 來說 Advice 行 兩 例 Pointcut Pointcut Aspect Joinpoint 說 Pointcut 說 了 Aspect Joinpoint Target Advice 例 DynamicProxyDemo HelloSpeaker LogHandler Advice Target 11

Introduction 類 Introduction 行 不 類 說 類 行 行 不 行 Proxy Expert One-on-One J2EE Development WIthout EJB Rod Johnson Juergen Hoeller AOP 略 Dynamic Proxies Dynamic Byte Code Generation Java Code Generation Use of a Custon Class Loader Language Extensions 理 理 例 理 Spring AOP 理來 Weave Advice Weave AOP Compile time 類 Classload time 行 Runtime DynamicProxyDemo 例 AOP 來 理 識 4.6 AOP J036 12