《Spring in Action(中文版)》章节试读

出版社:人民邮电
出版日期:2008-10
ISBN:9787115185273
作者:[美] Craig Walls,Ryan Breidenbach
页数:483页

《Spring in Action(中文版)》的笔记-开始Spring之旅 - 开始Spring之旅

依赖注入
Spring的真正威力在于能把一个bean注入到另一个bean中。
一般的应用都需要自己负责得到它的合作(依赖)对象,这样会导致代码耦合度高且难以测试。
使用依赖注入对象的依赖都是在对象创建时由负责协调应用中各个对象的外部实体提供的,这就是依赖注入到对象中。
DI的关键优点是松散耦合,如果一个对象只知道其依赖对象,那么该依赖将使用不一样的实现来交互,其依赖的对象不知道这种变化。
使用接口解耦合
企业级应用中的依赖注入。
依赖注入就是传递一个实例变量
如下面这个例子
public class Payroll {
...
EmployeeDatabase mEmployeeDatabase;
public Payroll(EmployeeDatabase employeeDatabase) {
mEmployeeDatabase = employeeDatabase;
}
public long getWithholding(long payInDollars) {
...
return withholding;
}
public long getAfterTaxPay(Employee employee) {
long basePay = mEmployeeDatabase.getBasePay(employee);
long withholding = getWithholding(basePay);
return basePay - withholding;
}
}
//来源: <http://objccn.io/issue-11-6/>


DI 使得软件组件松散变得可能,这是通过传递实例变量来达到的。,AOP让你能够捕捉应用中经常使用的功能,把它转换为可重用组件。

AOP介绍
面向切面编程,提升业务的分离。
使用AOP系统级业务覆盖了他影响到的组件,应用组件关注特定的业务功能。详见p16的两张对比图。
书中的例子是把日志服务写在了xml中声明了一个日志的bean,其中指定了执行函数之前和之后该执行的函数。
这样就不用在系统业务执行的时候显示记录日志了。

《Spring in Action(中文版)》的笔记-第二部分,核心,数据库 - 第二部分,核心,数据库

JDBC异常情况:一,应用程序无法连接数据库
二,执行的查询有语法错误
三,查询中出现的表或者列不存在
四,视图插入修改的违反数据库完整规则
SPRING:提供模板和回调
Spring支持各种持续和模板,提供获取连接底层
SPRING数据源连接:1.通过JDBC驱动程序定义的数据源
小应用程序,单线程的程序,两种DriverManagerDataSource和SingleConnectionDataSource(单线程)
2.通过JNDI查找的数据源
<jee:jndi-lookup id='dataSource'
jndi-name='jdbc/SpitterDs'
resource-ref-'tru' />
3.连接池的数据源
Jakarta Commons Database Connection Pooling(DBCP)
<bean id='dataSource'
class='org.apache.commons.dbcp.BasicDataSource'>
<property .......
Spring数据源使用: 1.JDBC最原始的
2. JDBC模板现在所有功能已经合并到SimpleDdbcTemplate里面了
配置数据模板,引用数据源
Spring数据Dao配置:1.配置DAO,Dao引用SimpleDdbcTemplate
SpringDao业务类集成Dao

《Spring in Action(中文版)》的笔记-第22页 - spring之旅

一,spring运行原理
1. 运行spring容器,一个线程服务,可能是个监听类,一直运行
2.加载应用上下文,这里必须是配置的,有连个应用上下文基类
2.1 org.springframework.beans.factory.beanFactory基本的依赖注入,基本不用
2.2 工厂类的继承org.springframework.context.ApplicationContext,应用上下文,
子类有
2.2.1 ClassPathXmlApplicationContext(指定路径下寻找文件)
2.2.2 FileSystemApplicationContext(所有路径下寻找文件,包含jar文件)
2.2.3 XmlWebApplicationContext (web环境下的路径,用于web)
二,spring基本功能
1.依赖注入:java中bean1依赖于bean2(bean1里面有涉及bean2的内容),则用bean2的接口方式传入类中,不用new的方式进行初始化,而是用xml注释的方式,进行控制反转注入,因为传递的是接口,可以在xml里面改变具体的bean2的实现类,实现了解耦,不用调用的类进行初始化,进行了控制反转
依赖注入的方法,构造函数的依赖
举个栗子:
class bean2{
}
class bean1{
private bean2 b2;
public bean1(int value,bean2 b2){
this.b2=b2;
}
}
配置文件
<bean id='bean2 ' class='bean2'>(这里默认的构造函数)
<bean>
<bean id='bean1 ' class='bean1'>(这里是构造函数传入法,可以多个参数,有引用和值)
<constructor-arg value='123' />
<constructor-arg ref='bean2'>
<bean>


2.切面编程
主要涉及两个类互不关联,请参考装饰模式,典型应用日志功能,方法执行前执行一段log输出,方法执行后执行一段log输出(所谓切面,就是那个加入log的方法)
举个栗子:
clas log{
void before(){}
void aftrer(){}
}
class bean{
void method()
}
配置方法
<bean id='log' class='log'></bean>
<bean id='bean' class='bean'></bean>
//执行切面了
<aop:config>
<aop:aspect ref='log'>
<aop:pointcut id='method' expression='execution(**.method(..))'>
<aop:before pointcut-ref='method' method='before'>
<aop:before pointcut-ref='method' method='after'>
<aop:aspect>
</aop:config>
3.模板功能(jdbcTemplet)
jdbcTemplate.queryForObject(){
“sql语句,可以带参数 比如 id=?”,
定义匿名类 new RowMapper<泛华的model>()
{
public 泛华的model名 mapRow(ResultSet rs,int rowNum)
throw SQLException{
泛化类 类=new 泛化类();
根据rs获取内容,给泛化类赋值
返回泛化类实例

}
}

,参数值
}
三,spring中的bean的生命周期bean生命周期图
四,spring扩展功能
spring加载过程
spring提供的服务还有邮件,jndi,访问,ejb集成,调度
为orm(object-relational mapping)提供orm模块,建立在dao支持上,spring没有自己的orm,而是整合hibernate等模块
自带mvc功能,有助于应用提升web技术的松散耦合,改框架提供了两种面向传统web应用的基于servlet的框架和面向使用java PortletApi的基于Portlet的应用,远程调用,集成了RMI,Hessian,Burlap,Jax-W,同时spring还自带远程调用框架HTTP invoker
提供单元测试功能
另一个强大的功能,spring Portfolio
流程控制,spring web flow
spring安全机制,spring secutrity
和其他应用交互 spring integration《spring integration in action》
对于批量操作数据库 spring bath《spring batch in action》 http:、、statci.springsource.org/spring-batch(p
43)
社交模块spring social ,spring的一个是视角网络扩展模块,相关信息访问http://http://www.springsource.org/spring-social
对于移动开发springsource.org/spring-mobile springsource.org/spring-android
spring-dm模块化管理组件 osgi
Gemini Bulueprint
基于模板的LDAP访问
图形界面开发,spring rich client 代替swing
spirng。net 没有aop 面向.net平台的 核心di和aop
对flex的支持 spring-flex集成包,使flex和air应用可以使用BlazeDs与服务端的spring进行通信,还包含spring roo的扩展,可以应用与快熟开发Flex应用
spring开发环境 Spring ROO springsource.org/roo
spring注解,spring mvc支持Rest

《Spring in Action(中文版)》的笔记-第83页 - spring自动装配和注入(最小springxml配置)

一、bean的自动装配(基于xml)
1.byName:bean中属性名字和与被装配的属性名字相同,就能装配,否则不能装配
注意:成员的名字一定要和配置的bean的id名称相同
例子:
class bean1{ }
class bean2{
private bean1 b1;
}
<bean id='b1' class='.....' />
<bean id='b2' class ='.....' autowired='byName' />
这样就能根据b1找到bean1进行装配了,方便
缺点:可能出现类型不匹配的问题
2.byType

3.constructor
4.autodetect
二、bean的自动检测
三、面向注解的Bean装配
四、基于java的spring配置

《Spring in Action(中文版)》的笔记-第1页

挺好的一本书。spring in action


 Spring in Action(中文版)下载 更多精彩书评


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024