Spring
容器:管理一组对象的生命周期
Spring组成部分
Core封装包是框架的最基础部分,提供IoC和依赖注入特性。
这里的基础概念是BeanFactory,它提供对Factory模式的经
典实现来消除对程序性单例模式的需要,并真正地允许你从程
序逻辑中分离出依赖关系和配置。
Context(上下文)封装包构筑于Core封装包的坚固基础上:它提
供了用一种框架风格的方式来访问对象,有些像JNDI注册表。
Context封装包继承了beans包的功能,还增加了国际化(I18N)
(用于规范resourcebundle),事件传播,资源装载,以及透
明创建上下文,例如通过servlet容器。
DAO提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据
库厂商特有的错误代码。并且,JDBC封装包还提供了一种比编
程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而
且对所有的POJOs(plainoldJavaobjects)都适用。
ORM封装包提供了常用的“对象/关系”映射APIs的集成层。其
中包括JPA、JDO、Hibernate和iBatis。利用ORM封装包,可
以混合使用所有Spring提供的特性进行“对象/关系”映射,
如前边提到的简单声明性事务管理。
Spring的AOP封装包提供了符合AOPAlliance规范的面向方面
的编程(aspect-orientedprogramming)实现,让你可以定义,
例如方法拦截器(method-interceptors)和切点(pointcuts),
从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。而且,
利用source-level的元数据功能,还可以将各种行为信息合并到
你的代码中,这有点象.Net的attribute的概念。
Spring中的Web包提供了基础的针对Web开发的集成特性,例如
多方文件上传,利用Servletlisteners进行IoC容器初始化和针
对Web的applicationcontext。当与WebWork或Struts一起使用
Spring时,这个包使Spring可与其他框架结合。
Spring中的MVC封装包提供了Web应用的Model-View-Controller
(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,
它提供了一种清晰的分离模型,在领域模型代码和webform之间。
并且,还可以借助Spring框架的其他特性
Ioc的知识点:
IOC容器概念
IoC原理
IoC的注入方式
Bean管理
生命周期
Ioc:InversionofControl,控制反转.
Spring提供的两个IoC容器(BeanFactory和ApplicationContext)
<1>:BeanFactory主要适用于环境、内容受限的场合,如在Applet环境中,
BeanFactory是最基础的IoC容器,它提供了配置框架和基础功能。
<2>:ApplicationContext
org.springframework.context.ApplicationContext由
BeanFactory接口派生扩展而来,因而提供了BeanFactory所有的
功能.在构建J2EE应用时,使用ApplicationContext将是更好的
选择。context包还提供了以下的功能:MessageSource,提供国
际化的消息访问.资源访问,如URL和文件。事件传播,实现了
ApplicationListener接口的bean。载入多个(有继承关系)
上下文。
<3>:ApplicationContext继承于BeanFactory,更适合于企业级的应用开
发。
开发srping的jar文件
%Spring_home%\dist\spring.jar
%Spring_home%\lib\log4j\log4j.jar
%Spring_home%\lib\jakarta-commons\commons-logging.jar
ApplicationContext.xml
Ioc注入方式:
<1>:set注入(javaBean必须含有无参数的构造函数)
<2>:构造函数注入(序列index从0开始)
1):xml文件的bean都会被我们ioc容器进行初始化。
2):当构造函数参数个数相同,参数类型不同,指定调用
构造函数的时候需要加上type属性指定参数的类型。
<constructor-argindex="0"value="1"type="int"/>
<constructor-argindex="1"value="icexu"type="java.lang.String"/>
Spring组成部分:
<1>:ioc
<2>:aop
<3>:dao
<4>:orm
<5>:jee
<6>:web(mvcview)
ioc:BeanFactoryApplicationContext
<1>:注入方式|
set无参数构造函数
构造器注入(构造函数重载indextype)
基本属性和集合类型
自定义属性reflocal(同一个配置文件)
Bean(可以不在同一个配置文件下)
自动装配
default-autowire="byName"(bean的id的取值)
default-autowire="byType"
Bean的作用域
singleton默认
prototype
Aop:面向切面编程
AOP(AspectOrientedProgramming)的目的即在
正常的业务操作之外增加的附加操作通过切入点(pointcut)指
名进行哪些切面、
aop:动态代理、
代理模式:
静态代理:代理对象和目标对象实现统一接口
动态代理:运行时候动态加上
IUserDao{
saveUser();
deleteUser();
}
Springaop:
<1>:代理模式
<1>:静态代理
<2>:动态代理PROXY
<3>:工厂模式
<2>:Spring有关技术术语
DAO:只管访问数据库不关心事务findByNameAndPassword(name,password)
BIZ:不直接写数据访问代码DAO支持关心事务
转账:
<1>:取钱
<2>:存钱
登陆login
Session:session什么时候打开什么时候关闭?
<3>:dao
事务的传播行为
propagation_required——表示如果没有事务,则开始新的事务,事务已经存在,则加入当前事务
propagation_supports——表示如果事务已经存在,则加入当前事务,如果没有事务,不会开始新事务
propagation_mandatory——表示必须有事务存在,并加入当前事务,否则抛出异常
propagation_requires_new——表示每次都开始一个全新事务
propagation_not_supported——表示不会开始或加入事务
propagation_never——表示不会开始或加入事务,如果事务已存在,抛出异常