快速业务通道

Spring学习点滴,《Spring in Action》笔记(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
间:2011-08-18 unmi.cc 隔叶黄莺

13. 监听事件,配置实现了ApplicationListener的Bean,容器会自动注册它,发布ApplicationEvent 时由它处理,事件的处理是同步的(P74)

14. Bean 实现了 BeanNameAware, BeanFactoryAware 或 ApplicationContextAware 可以感知它自己 或所处环境的信息,但这样做却让 Bean 与 Spring 框架耦合起来了(P76)

第三章:创建切面

--------------------------------------------------------------------------------

15. AOP: spring 有两种代理创建方式,对接口方法用JDK的java.lang.reflect.Proxy类创建代理, 对于未实现接口的借助于 CGLIB 库生成目标对象的子类,标记为 final 的方法不能被通知,因为子类中 不能覆写该方法(P83)

16. Spring 只支持方法连接点,应该也是秉着够用就行的道理,直接用 AspectJ 将能做十分细致的 活,Spring 2.x 用上了 AspectJ。(P84)

17. MyEclipse 提供了一种快捷方式来写Bean的配置,从左树上把类拖到打开的 Spring 的配置文件 中依提示行事即可,实际使用中看是否真正实用

18. 在 MethodBeforeAdvice中可以抛异常(或System.exit(),这有点过份了) 阻止目标方法的执行 ,如果此时抛出的异常是 RuntimeException 或者目标方法申明的异常,将会被 Spring 框架捕获(P86)

19. MethodInterceptor 能控制目标方法是否真的被调用,用 methodInvocation.proceed() 调用目 标方法(P89)

20. MethodInterceptor 可以返回一个与目标方法不同的对象,但也必须是兼容的,否则出现 ClassCastException 异常(P89)

21. 实现接口 ThrowsAdvice 的类,必须至少有一个如下形式方法:

1)void afterThrowing(Throwable throwable)

2)void afterThrowing(Method method, Object[] args, Object target, Throwable throwable)

在 ThrowsAdvice 并没有象 MethodBeforeAdvice, MethodAfterAdvice 和 MethodInterceptor 定义 了要实现的方法,只是一个不成文的约定,不知作者是如何考虑的,怕定义了两个方法后实现类要实现两 个方法(可能只需用到一个方法)而麻烦吗?那至少可以弄一个 ThrowsAdviceAdapter 的东西,Spring 中还确实有这玩艺,但不是那么回事。

这种 ThrowsAdvice 对实现类不成文的规定,让在 IDE 中写代码不方便,也容易产生错误(P90)

22. 当你的 ThrowsAdvice 同时实现了上面两个方法时,只有参数多的那个方法有效,只实现第一个 方法也是可以的,所以在 ThrowsAdvice 的源代码中只提到要实现第二个方法,所以我就更想不能了,为 什么在接口 ThrowsAdvice 中不定义这个方法呢?(P90)

23. 记录几个书中错误:54页的java.awt应该是java.util。94页的maidService配置中的 frequentCustomerAdvisor应该是 frequentCustomerPointcutAdvisor。108页,后面两个 proxyInterfaces 应该是 interceptorNames

Spring学习点滴,《Spring in Action》笔记(一)(3)

时间:2011-08-18 unmi.cc 隔叶黄莺

24. 用 NameMatchMethodPointAdvisor 能简单的用通配符控制切入点,但要细致的控制切入点就要用 RegexpMethodPointcutAdvisor 结合正则表达式了, 它可含有类名信息,而 NameMatchMethodPointAdvisor只需考虑方法名的匹配(P90)

25. 动态切入点的配置方法与静态切入点略有不同,需要申明一个ControlFlowPointcut的Bean (Pointcut)作为DefaultPointcutAdvisor的pointcut属性,然后这个advisor配置到ProxyFactoryBean的 interceptorNames,所以想,既然是叫做DefaultPointcutAdvisor,那么是不是别的Pointcut也可以通过 这种方式来配置呢?动态切入点很损耗性能,非必要是不用,对JDK1.4会慢5位,对JDK1.3会慢10,对于 JDK1.5恐怕也好不到哪儿去(P96)

26. 觉得 Spring

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号