首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

精通Spring:读书笔记(2)

2012-10-09 
精通Spring:读书笔记(二)1、加强BeanFactory及其实现的功能,Spring框架引入了ApplicationContext接口。开发

精通Spring:读书笔记(二)

1、加强BeanFactory及其实现的功能,Spring框架引入了ApplicationContext接口。
开发者不需要手动创建AppplicationContext实例,便可以以声明的方式使用它,譬如通过:

org.springframework.web.context.ContextLoaderServlet

?或者

org.springframework.web.context.ContextLoaderListener

?能够在Web应用启动的时候自动实例化ApplicationContext对象。


===================================================


2、对于Spring BeanFactory而言,如果用户没有调用getBean()方法,则使用到的JavaBean实例不会被创建
。除非客户调用了getBean()方法,因此在BeanFactory中使用了延迟装载的机制。主要同BeanFactory的
应用场合(内存或其他资源受限的场合)有关系。
对于Spring ApplicationContext而言,一旦ContextLoaderListener或ContextLoaderServlet初始化成
功,所有的JavaBea将会被创建(也可以显示延迟装载)。


===================================================


3、使用ApplicationContext的优势:
??? 在Web应用中创建ApplicationContext,通过ContextLoaderListener或
???????? ContextLoaderServlet能够自动创建ApplicationContext实例。


===================================================


4、ClassPathXmlApplicationContext:在Web应用中,开发者可以从其classpath中既WEB-
INF/classes或WEB-INF/LIB的jar中装载Spring配置文件,在单元测试中,开发者经常使用到
ClassPathxmlApplicationContext
??? FileSystemXmlApplicationContext:开发者可以从文件系统中装载Spring配置文件,在单元测
试中,开发者经常使用到FileSystemApplicationContext
??? XmlWebApplicationContext:供ContextLoaderListener或ContextLoaderServlet内部装载
Spring配置文件使用。


===================================================


5、Spring实现的观察者模式:借助于ApplicationEvent抽象类及其子类实现事件的发布,与此同时借助于
ApplicationListener接口及其实现者实现时间的监听。发布ApplicationEvent,开发者需要借助于
ApplicationContext,它提供的publishEvent方法。


===================================================


6、面向对象编程(OOP)更多地从系统的垂直切面关注问题,对于系统的横切面关注甚少,譬如:日志、安
全性、事务以及其他企业级服务方面的代码。
面向切面编程(AOP)允许开发者动态修改OOP定义的静态模型,即不修改原始的OO模型,甚至可以不用修
改OO代码本身,即可完成对横切面问题的解决。譬如:将系统中处理日志、安全性、事务以及其他企业
级服务的代码集中放置在一个地方。因此,AOP使得OOP中的重复代码能够大范围减少。


===================================================


7、核心关注点:主要是关注系统的业务逻辑
横切关注点:主要是关注系统级的服务,供业务逻辑使用
连接点模型(joinpoint)的强弱在很大程度上决定了AOP实现功能的强弱。
jointpoint是指AOP Aspect能够在应用系统中执行的地方,譬如:某个方法调用之前,修改某个域之前...


===================================================


Spring目前只实现了方法级的joinpoint???

===================================================


8、Spring AOP优势:
??? 1、允许开发者使用声明式企业级服务:事务、安全服务。
??? 2、开发者可以开发满足业务需求的自定义方面。
??? 3、开发Spring AOP Advice很方便,因为这个AOP Advice仅仅是POJO类,借助于Spring提供的
ProxyFactoryBean,能够快速地搭建Spring AOP Advice使能应用。


===================================================


9、Advice装备:
?Before装备:在执行目标操作之前执行的装备,MethodBeforeAdvice接口。
?Throws装备:如果目标执行过程中抛出异常,则该装备会执行,AfterReturningAdvice接口。
?After装备:在执行目标操作之后执行的装备,ThrowsAdvice接口。
?Around装备:在方法调用前后执行的装备。使用非常灵活,MethodInterceptor接口。(可以应用于资源初始化和释放操作)
?Introduction装备:能够为类新增方法,最为复杂。


===================================================


10、通过名字或者id获得的引用对象并不是ProxyFactoryBean实例本身,而是ProxyFactoryBean中个
getObject()方法实现返回的对象。其中,getObject方法创建AOP代理,并将目标对象包裹(wrapper)
在其中。属性:
??? proxyInterfaces:接口名称构成的字符串列表,即接口集合。
??? proxyTargetClass:是否使用CGLIB代理目标类的标志位。
??? interceptorNames:拦截器名构成的字符串列表,即拦截器集合。
??? target:执行目标类,即在target指定的JavaBean执行时,将触发对上述拦截器的调用。
??? sigleton:单实例的标志位,每次调用ProxyFactoryBean的getObject方法时,返回同一个对象???
??? ,还是返回不同对象。


===================================================


11、对象池:
??? 目标对象 ---> 对象池配置 ---> 通过代理得到(强化)

热点排行