首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

黑马软件工程师_Java高新技术

2013-01-23 
黑马程序员__Java高新技术/*------------------类似spring的AOP框架实现------------1.配置文件配置classN

黑马程序员__Java高新技术
/*------------------类似spring的AOP框架实现------------1.配置文件配置className #className=java.util.ArrayList className=cn.itcast.proxy.ProxyFactoryBean className.advice=cn.itcast.proxy.MyAdvice className.target=java.util.ArrayList2.FacntoryBean构造函数初始化加载配置文件,从配置文件中使用FactoryBean工厂类的getBean(className)方法获取一个Bean或者ProxyFactoryBean3.如果加载的是一个Bean直接返回Bean4.如果加载的是一个ProxyFactoryBean 定义Advice和target并初始化。 用ProxyFactoryBean类的set方法对对象的Advice和target进行初始化。5.返回ProxyFactoryBean对象。*/class FactoryBean{private Properties p = new Properties();//构造函数初始化加载配置文件FactoryBean(InputStream ips){try{p.load(ips);}catch (IOException e){throw new RuntimeException("加载配置文件失败");}}//获取bean对象public Object getBean(String key) throws Exception //为了简化代码便于阅读,没有处理异常{String className = p.getProperty(key);Object bean = Class.forName(className).newInstance();if(bean instanceof ProxyFactoryBean){Object proxy = null;ProxyFactoryBean proxyFactoryBean = (ProxyFactoryBean)bean;Advice advice = (Advice)Class.forName(p.getProperty(key+".advice")).newInstance();Object target = Class.forName(p.getProperty(key+".target")).newInstance();proxyFactoryBean.setAdvice(advice);proxyFactoryBean.setTarget(target);proxy = proxyFactoryBean.getProxy();return proxy;}return bean;}}class ProxyFactoryBean{private Advice advice;private Object target;/*获取代理对象*/public Object getProxy(){Object proxy = Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),new InvocationHandler(){public Object invoke(Object proxy,Method method,Object[] args) throws Exception{advice.beforMethod(method);Object value = method.invoke(target,args);advice.afterMethod(method);return value;}});return proxy;}/*创建advice和target的set及get方法*/public void setAdvice(Advice advice){this.advice = advice;}public void setTarget(Object target){this.target = target;}public Advice getAdvice(){return advice;}public Object getTarget(){return target;}}/*AOP框架测试类*/class AOPFrameworkTest{public static void main(String[] args) throws Exception{InputStream ips = AOPFrameworkTest.class.getResourceAsStream("resource/config.properties");Collection bean=(Collection)new FactoryBean(ips).getBean("className");bean.add("abc");System.out.println("the created bean is:"+bean.getClass().getName());}}

?


----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

?

热点排行