黑马程序员(八) 实现Aop功能的封装和配置的小程序
来源:互联网 发布:soho程序员兼职平台 编辑:程序博客网 时间:2024/05/23 00:13
要求:::工厂类BeanFactory 负责创建目标类或者代理类的实例对象,并通过配置文件实现切换,其
方法更具参数字符串返回一个相应的实例对象,如果番薯字符串在配置文件中对应的类名下不是
ProxyFactorybean则直接返回该类的实例对象,否则返回该类实例对象的getProxy方法返回的对象
设计思路:::
1,BeanFactory的构造方法接受达标配置文件的输入流对象。配置文件如下
//xxx=java.util.ArrayList
xxx=day3.ProxyFactoryBean
xxx.target=java.util.ArrayList
xxx.advise=day3.MyAdvice
2,ProxyFactoryBean充当封装生成动态代理的工厂,需要为工厂类提供哪些配置信息呢。?
目标:
通知:
3,编写客户端应用
a,编写实现advice接口的类和配置文件中进行配置
b,调用BeanFactory获取对象
第一步。。创建BeanFactory
package day3;import java.io.IOException;import java.io.InputStream;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.util.Properties;public class BeanFactory {private static Properties pro;BeanFactory(InputStream ins)//BeanFactory的输入流构造方法。直接的从调用程序里传入一个配置文件调用它{pro=new Properties();try {pro.load(ins);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public Object getBean(String name)throws Exception//创建getbean方法。。{String vaule=pro.getProperty(name);Class clazz=Class.forName(vaule);Object bean=clazz.newInstance();//创建bean类型的实例对象。if(bean instanceof ProxyFactoryBean)//bean 对象属于proxyFactoryBean创建的对象{ProxyFactoryBean proxy=(ProxyFactoryBean)bean;//强制转换。因为bean对象属于它String adviseName=pro.getProperty(name+".advise");MyAdvice advise=(MyAdvice)Class.forName(adviseName).newInstance();//加载配置文件,创建一个配置文件对象String targetName=pro.getProperty(name+".target");Object target=Class.forName(targetName).newInstance();proxy.setAdvise(advise);//设置proxybean对象的的字段值proxy.setTarget(target);return proxy.getProxy();//调用getProxy方法。返回proxy对象}return bean;}}
因为如果是ProxyFactorybean的话该类实例对象的getProxy方法返回的对象。。这里就要引用到动态代理返回的对象。调用模板。。创建ProxyFactorybean类。同时设置好两个字段属性值。。这也是一个bean类。按照bean类去设置就可以了
package day3;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class ProxyFactoryBean {private MyAdvice advise;
package day3;import java.io.InputStream;public class AopFramworkTest {/** * @param args */public static void main(String[] args) throws Exception{// TODO Auto-generated method stubInputStream ins=AopFramworkTest.class.getResourceAsStream("config.properties");System.out.println(new BeanFactory(ins).getBean("xxx").getClass().getName());}}
创建主程序加载配置信息。调用方法返回实例对象
package day3;import java.io.InputStream;public class AopFramworkTest {/** * @param args */public static void main(String[] args) throws Exception{// TODO Auto-generated method stubInputStream ins=AopFramworkTest.class.getResourceAsStream("config.properties");System.out.println(new BeanFactory(ins).getBean("xxx").getClass().getName());}}
0 0
- 黑马程序员(八) 实现Aop功能的封装和配置的小程序
- 实现AOP功能的封装和配置
- 黑马程序员--AOP功能的封装与配置
- 【实现AOP功能的封装与配置】
- java基础巩固笔记(4)-实现AOP功能的封装与配置的小框架
- 动态代理的实现3-实现aop功能的封装和配置
- 动态代理的实现3-实现aop功能的封装和配置 .
- 动态代理的实现3-实现aop功能的封装和配置
- 实现AOP的功能的封装与配置
- 黑马程序员_java小程序——实现简单记事本的打开保存功能
- 黑马程序员--代理+AOP--实现一个类似spring的可配置的简单AOP框架
- 黑马程序员--基础加强--第九篇--实现类似spring的可配置的AOP框架
- 黑马程序员 实现类似spring的可配置的AOP框架
- 黑马程序员-代理、实现类似Spring的可配置AOP框架
- 黑马程序员--09.动态与代理AOP--06【动态代理实例化的过程升级--目标对象+系统功能的参数化】【实现类似Spring的可配置AOP框架】
- 让动态生成的类成为目标类的代理-实现AOP功能的封装与配置
- 黑马程序员_模拟Spring可配置的AOP框架
- 黑马程序员-小框架的实现
- tortoisegit 设置密码
- Android内存管理试验——浅谈ImageView的Bitmap的使用
- Oralce 调用Delphi写DLL去访问C# WebService的问题
- c#封装jmail的pop3收邮件
- 改进的C#插件构架
- 黑马程序员(八) 实现Aop功能的封装和配置的小程序
- C#中生成中文繁体web页面
- 黑马程序员_java基础之一
- c#调用API显示内部局域网内的主机
- c# DataGrid 使用 小tip (1)
- 如何在不安装Oracle客户端的情况下,使用PL/SQL Developer连接数据库
- Android学习笔记3--运行模拟器
- 如何安装ROS
- 计算机通俗理解