首先我先吐槽一下这本书的封面图,我能理解成一个包着头巾的男人举着个水壶昂首挺胸,最后给你个眼神....开玩笑的这幅插图是约旦西南部卡拉克省的居民,那里的山顶有座城堡,对死海和平原有极佳的视野,这幅图出自1796年的法国旅游图书,反应各个地区生活的多样性,同样,本书采用这个插图,也是对计算机行业进取的赞美。
题外话扯远了。
最近在看spring实战,该书由Craig Walls编写,Spring是一个开源框架,它由Rod Johnson创建,巴拉巴拉。。。。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情(首先要明白,什么是ejb)。最后任何Java应用都可以从Spring中受益。
先回忆一下,spring最重要的就是java bean、aop以及ioc(DI)。
科普一下ejb:
我的理解ejb属于j2ee框架的一部分,服务器端的组件,包括3类:会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。
会话Bean就是当一个客户端请求到来时,容器就会创建一个会话bean来处理业务逻辑;
实体Bean是处理数据库映射的,持久化的;
消息驱动Bean,给予jms消息,异步无状态;
只能说到这了。
第一部分 spring的核心
核心部分首先想到有2个,依赖注入DI和AOP切面编程。
第一章 spring之旅
先来一次旅行,
还得从java说起,众所周知以前的开发模式是cs的,开发applet富客户端程序,同事他的缺点也就暴露了,难以模块化,系统臃肿。所以1996年12月,sun最先发布了javabean规范,定义了一个组件模型,可以被重用构建更为复杂的应用,但当时主要用来构建富客户端用户界面,企业级开发并未得到满足。
题外话:语言或者框架的发展,就是不断发现前辈的缺点,并改进,我的需求没有被满足。。。
众所周知,企业级应用非常复杂,需要事务处理、安全、分布式计算等等,所以就提出了ejb1.0,把规范延伸到了服务器端,很明显ejb并没有简化企业级开发,所以失败。
1.1简化java开发
1.1.1激发pojo的潜能
1.1.2依赖注入
<bean id="knights" class="com.hundsun.springframwork.service.impl.KnightServiceImpl">
<constructor-arg ref="quest"></constructor-arg></bean>
1.1.3应用切面
<bean id="knights" class="com.hundsun.springframwork.service.impl.KnightServiceImpl"></bean>
<bean id="minstrel" class="com.hundsun.springframwork.dto.Minstrel"></bean>
<aop:config>
<aop:aspect ref="minstrel">
<aop:pointcut expression="execution(* *.quest(..))" id="embark"/>
<aop:before pointcut-ref="embark" method="singBeforeQuest" />
<aop:after pointcut-ref="embark" method="singAfterQuest" />
</aop:aspect>
</aop:config>
minstrel对象是切面,切点为knights对象的quest()方法。
1.1.4使用模板消除样板式代码
1.2容纳你的bean
1.2.1与应用上下文共事
FileSystemXmlApplicationContext:文件系统加载