• 春天aopframework实现


    Java的代码  收藏代码
    1.  cn.itcast.day3.aopframework;  
    2. 进口 java.io.IOException的;  
    3. 进口 的java.io.InputStream;  
    4. 进口 java.util.Properties;  
    5. 进口 cn.itcast.day3.Advice;  
    6. 公共  的BeanFactory {  
    7.     属性道具=   特性();  
    8.     公共 Bean工厂(IPS的InputStream){  
    9.         尝试 {  
    10.             props.load(IPS);  
    11.         }  赶上 (IOException异常E){  
    12.             e.printStackTrace();  
    13.         }  
    14.     }  
    15.       
    16.     公共 对象的getBean(字符串名称){  
    17.         弦乐的className = props.getProperty(名称);  
    18.         对象豆=  ;  
    19.         尝试 {  
    20.             clazz类=的Class.forName(类名);  
    21.             豆= clazz.newInstance();  
    22.         }  赶上 (例外五){  
    23.             e.printStackTrace();  
    24.         }   
    25.         如果(豆  的instanceof  的ProxyFactoryBean){  
    26.             对象代理=  ;  
    27.             ProxyFactoryBean中的ProxyFactoryBean =(ProxyFactoryBean里)豆;  
    28.             尝试 {  
    29.                 意见建议=(咨询)的Class.forName(props.getProperty(姓名+  “.advice” ))的newInstance()。  
    30.                 对象目标=的Class.forName(props.getProperty(名称+  “的.target” ))的newInstance()。  
    31.                 proxyFactoryBean.setAdvice(咨询);  
    32.                 proxyFactoryBean.setTarget(目标);  
    33.                 代理= proxyFactoryBean.getProxy();  
    34.             }  赶上 (例外五){  
    35.                 e.printStackTrace();  
    36.             }  
    37.             返回 代理;  
    38.         }  
    39.         返回 豆;  
    40.     }  
    41. }  
    42.   
    43.  cn.itcast.day3.aopframework;  
    44.   
    45. 进口 的java.io.InputStream;  
    46. 进口 java.util.Collection的;  
    47.   
    48. 公共  AopFrameworkTest {  
    49.   
    50.     / ** 
    51.      * @参数的args 
    52.      * /  
    53.     公共 静态 无效 的主要(字串[] args)  抛出 异常{  
    54.         // TODO自动生成方法存根  
    55.         InputStream的IPS = AopFrameworkTest。.getResourceAsStream(“config.properties” );  
    56.         对象豆=   的BeanFactory(IPS).getBean(“XXX” );  
    57.         的System.out.println(bean.getClass()的getName());  
    58.         ((集合)豆).clear();  
    59.     }  
    60.   
    61. }  
    62.   
    63.  cn.itcast.day3.aopframework;  
    64.   
    65. 进口 java.lang.reflect.InvocationHandler;  
    66. 进口 java.lang.reflect.Method中;  
    67. 进口 java.lang.reflect.Proxy;  
    68.   
    69. 进口 cn.itcast.day3.Advice;  
    70.   
    71. 公共  的ProxyFactoryBean {  
    72.   
    73.     私人 咨询建议;  
    74.     私人 对象的目标;  
    75.       
    76.     公众 咨询getAdvice(){  
    77.         返回 意见;  
    78.     }  
    79.   
    80.     公共 无效 setAdvice(咨询意见){  
    81.         .advice =意见;  
    82.     }  
    83.   
    84.     公共 对象了getTarget(){  
    85.         返回 的目标;  
    86.     }  
    87.   
    88.     公共 无效 setTarget(目标对象){  
    89.         .TARGET =目标;  
    90.     }  
    91.   
    92.     公共 对象的getProxy(){  
    93.         // TODO自动生成方法存根  
    94.         反对Proxy3服务器= Proxy.newProxyInstance(  
    95.                 target.getClass()。getClassLoader(),  
    96.                 / *新的Class [] {} Collection.class,* /  
    97.                 target.getClass()。getInterfaces(),  
    98.                  的InvocationHandler(){  
    99.                   
    100.                     公共 对象调用(对象代理,方法的方法,对象[]参数)  
    101.                             抛出 的Throwable  
    102.   
    103.                         / *长BEGINTIME = System.currentTimeMillis的(); 
    104.                         对象retVal的= method.invoke(目标参数); 
    105.                         长endTime的= System.currentTimeMillis的(); 
    106.                         的System.out.println(method.getName()+“运行时间”+(endTime的 - BEGINTIME)); 
    107.                         返回retVal的; * /  
    108.                           
    109.   
    110.                         advice.beforeMethod(法);  
    111.                         对象retVal的= method.invoke(目标参数);  
    112.                         advice.afterMethod(法);  
    113.                         返回 retVal的;                        
    114.                           
    115.                     }  
    116.                 }  
    117.                 );  
    118.         返回 Proxy3发出;  
    119.     }  
    120.   
    121. }  
    122. config.properties  
    123. #XXX =的java.util.ArrayList  
    124. XXX = cn.itcast.day3.aopframework.ProxyFactoryBean  
    125. xxx.advice = cn.itcast.day3.MyAdvice  
    126. xxx.target =的java.util.ArrayList  
  • 相关阅读:
    java。equal()和== 的区别
    java。封装
    java。OOA,OOD,OOR
    java。类和对象
    java、数组;堆区,栈区
    java。 break和continue区别
    NYOJ 228 士兵杀敌(五)【差分标记裸题】
    2017CCPC 杭州 J. Master of GCD【差分标记/线段树/GCD】
    CF1025B Weakened Common Divisor【数论/GCD/思维】
    网络流算法笔记
  • 原文地址:https://www.cnblogs.com/baiduligang/p/4246986.html
Copyright © 2020-2023  润新知