黑马程序员技术交流社区

标题: 关于代理工厂的问题 [打印本页]

作者: 吴清源    时间: 2013-9-2 20:50
标题: 关于代理工厂的问题
本帖最后由 吴清源 于 2013-9-3 10:17 编辑
  1. package com.wqYuan.test;

  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.util.Properties;

  5. public class BeenFactory {
  6. Properties proes = new Properties();
  7. public BeenFactory(InputStream ips) {
  8. try {
  9. proes.load(ips);
  10. } catch (IOException e) {
  11. // TODO 自动生成的 catch 块
  12. e.printStackTrace();
  13. }
  14. }

  15. public Object getBeen (String name){
  16. String className = proes.getProperty(name);
  17. Object bean = null;
  18. try {
  19. Class<?> clazz = Class.forName(className);
  20. bean = clazz.newInstance();
  21. } catch (ClassNotFoundException e) {
  22. // TODO 自动生成的 catch 块
  23. e.printStackTrace();
  24. } catch (InstantiationException e) {
  25. // TODO 自动生成的 catch 块
  26. e.printStackTrace();
  27. } catch (IllegalAccessException e) {
  28. // TODO 自动生成的 catch 块
  29. e.printStackTrace();
  30. }
  31. if (bean instanceof ProxyFactoryBean) {
  32. Object pro = null;
  33. ProxyFactoryBean proxy = (ProxyFactoryBean)bean;
  34. try {
  35. Advice advice = (Advice)Class.forName(proes.getProperty(className+".advice")).newInstance();
  36. Object target = Class.forName(proes.getProperty(className+".target")).newInstance();
  37. //System.out.println("utyhthtyj");
  38. proxy.setAdvice(advice);
  39. proxy.setTarget(target);
  40. } catch (InstantiationException e) {
  41. // TODO 自动生成的 catch 块
  42. e.printStackTrace();
  43. } catch (IllegalAccessException e) {
  44. // TODO 自动生成的 catch 块
  45. e.printStackTrace();
  46. } catch (ClassNotFoundException e) {
  47. // TODO 自动生成的 catch 块
  48. e.printStackTrace();
  49. }

  50. pro = proxy.getProxy();
  51. return pro;
  52. }

  53. return bean;
  54. }
  55. }
复制代码
这是BeanFactory的代码,运行main方法的时候提示advice空指针异常,我那配置文件没有写错啊
zzz=com.wqYuan.test.ProxyFactoryBean
zzz.target=java.util.ArrayList
zzz.advice=com.wqYuan.test.MyAdvice
传进去的字符串名称也是zzz。

作者: 熊纪达    时间: 2013-9-2 21:21
pro = proxy.getProxy();  里面没有传入advice 和 target
作者: 郭嘉喜欢孙尚香    时间: 2013-9-2 22:18
没看大牛股
作者: 吴清源    时间: 2013-9-3 10:23
熊纪达 发表于 2013-9-2 21:21
pro = proxy.getProxy();  里面没有传入advice 和 target

恩恩,谢谢啦,昨晚重新整理了一下,是我参数里的advice和target传入了它们配置里对应的键值了,现在程序可以运行了{:soso_e121:}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2