A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


public class ProxyFacotryBean {

       
        public Object getBean(final Object target,final Advice advice)
        {
               
          Object bean=Proxy.newProxyInstance(
                                Collection.class.getClassLoader(),
                                Collection.class.getInterfaces(),
                                new InvocationHandler()
                                {
                                        @Override
                                        public Object invoke(Object proxy, Method method,
                                                        Object[] args) throws Throwable {
                                                // TODO Auto-generated method stub
                                                 advice.before(method);
                                                 Object vel=method.invoke(target, args);
                                                 advice.after(method);
                                                return vel;
                                        }
                                       
                                });
          return bean;
                               
        }
       
}




import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class BeanFactory {
   
        private Properties prp=new Properties();
           
        public BeanFactory(InputStream inStream)
        {
                try {
                        prp.load(inStream);
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
        public Object getBean(String name)
        {
                Object bean=null;
                String className=prp.getProperty(name);
               
                        try {
                                bean=Class.forName(className).newInstance();
                        } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                if(bean instanceof ProxyFacotryBean)   
                {
                        Object target;
                        try {
                                target = Class.forName(prp.getProperty(name+".target")).newInstance();
                       
                            Advice advice=(Advice)Class.forName(prp.getProperty(name+".advice")).newInstance();
                        bean=new ProxyFacotryBean().getBean(target, advice);
                        } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
                return bean;
        }
}

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马