`

试读《Spring 3.x企业实用开发实战》 的收获和心得

 
阅读更多

虽然一直在项目中使用Spring,但是一些底层的设计思想还真是不太清楚。借此机会,学习升华一下。

收获:

第三章 IoC容器概述

1. 虽然知道Spring的核心技术是控制反转IoC(Inverse of Control)和依赖注入DI(Dependency Injection),也知道Java的反射机制, 但是Spring使用的是Java反射机制作为底层技术实现IoC,这我还是从本书中了解到的,也更深的理解了Spring的控制反转原理。

2. 作者用《墨攻》作为例子解释IoC,还真是通俗易懂,非常形象,容易理解啊。还有Martin Fowler提出的DI概念也确实比IoC直接明了,易于理解。

3. Spring只支持构造函数注入和属性注入,而不支持接口注入。原因是通过接口注入需要额外声明一个接口,增加了类的数目,而且它的效果和属性注入并无本质区别,因此不提倡采用这种方式。

4. 对Java反射机制的描述深入浅出。Java 的反射体系保证了可以通过程序化的方式访问目标类中所有的元素,对于private 或protected 的成员变量和方法,只要JVM 的安全机制允许,也可以通过反射进行调用。

5. Spring支持基于类注解的配置方式, 百度了一下是从2.5版本开始的。和基于XML 文件配置方式的优势在于,类注解的配置方式可以很容易地让开发者控制Bean 的初始化过程,比基于XML 的配置更加灵活。

6.

1)BeanFactory 是Spring 框架的基础设施,面向Spring 本身;ApplicationContext 面向使用Spring 框架的开发者,几乎所有的应用场合我们都直接使用ApplicationContext 而非底层的BeanFactory。

2)在BeanFactory 中,很多功能需要以编程的方式实现,而在ApplicationContext 中则可以通过配置的方式实现。

3)ApplicationContext 和BeanFactory 另一个最大的不同之处在于:前者会利用Java 反射机制自动识别出配置文件中定义的BeanPostProcessor、InstantiationAwareBeanPostProcessor和BeanFactoryPostProcessor,并自动将它们注册到应用上下文中;而后者需要在代码中通过手工调用addBeanPostProcessor()方法进行注册。这也是为什么在应用开发时,我们普遍使用ApplicationContext 而很少使用BeanFactory 的原因之一。

 

纠错:

P82, 在beans.xml中,作者应该是将② 和 ③ 处 定 义 的BeanPostProcessor 和BeanFactoryPostProcessor注释写反了,前者是Bean后处理器,后者才是工厂后处理器。

 

 

第16章 实战型单元测试

1. 通过作者对JUnit4中一些新功能的介绍,回头去看原来项目中的单元测试(注:使用的也是JUnit),确实发现有许多可以改进的地方。比如:使用@BeforeClass和@AfterClass代替@Before和@After注解,减少相同测试夹具(Fixture)的重复设置,提高测试效率。

 

仍然试读中,更新中......

(未完待续)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics