Spring

本文详细介绍了Spring框架的核心组件,包括IoC容器、AOP、DAO等,解释了BeanFactory和ApplicationContext的区别,以及如何实现依赖注入。同时探讨了面向切面编程的概念和技术实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器:管理一组对象的生命周期
Spring组成部分
Core 封装包是框架的最基础部分,提供IoC和依赖注入特性。
这里的基础概念是BeanFactory,它提供对Factory模式的经
典实现来消除对程序性单例模式的需要,并真正地允许你从程
序逻辑中分离出依赖关系和配置。

Context(上下文) 封装包构筑于Core封装包的坚固基础上:它提
供了用一种框架风格的方式来访问对象,有些像JNDI注册表。
Context封装包继承了beans包的功能,还增加了国际化(I18N)
(用于规范resource bundle),事件传播,资源装载,以及透
明创建上下文,例如通过servlet容器。

DAO 提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据
库厂商特有的错误代码。 并且,JDBC 封装包还提供了一种比编
程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而
且对所有的POJOs(plain old Java objects)都适用。

ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其
中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可
以混合使用所有Spring提供的特性进行“对象/关系”映射,
如前边提到的简单声明性事务管理。

Spring的 AOP 封装包提供了符合 AOP Alliance规范的面向方面
的编程(aspect-oriented programming)实现,让你可以定义,
例如方法拦截器(method-interceptors)和切点(pointcuts),
从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。而且,
利用source-level的元数据功能,还可以将各种行为信息合并到
你的代码中,这有点象.Net的attribute的概念。

Spring中的 Web 包提供了基础的针对Web开发的集成特性,例如
多方文件上传,利用Servlet listeners进行IoC容器初始化和针
对Web的application context。当与WebWork或Struts一起使用
Spring时,这个包使Spring可与其他框架结合。

Spring中的 MVC 封装包提供了Web应用的Model-View-Controller
(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,
它提供了一种 清晰的 分离模型,在领域模型代码和web form之间。
并且,还可以借助Spring框架的其他特性

Ioc的知识点:
IOC容器概念
IoC原理
IoC的注入方式
Bean管理
生命周期

Ioc: Inversion of Control,控制反转.
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-arg index="0" value="1" type="int"/>
<constructor-arg index="1" value="icexu" type="java.lang.String"/>
Spring组成部分:
<1>:ioc
<2>:aop
<3>:dao
<4>:orm
<5>:jee
<6>:web(mvc view)
ioc: BeanFactory ApplicationContext
<1>:注入方式 |
set 无参数构造函数
构造器注入(构造函数重载 index type)
基本属性和集合类型
自定义属性 ref local(同一个配置文件)
Bean(可以不在同一个配置文件下)
自动装配
default-autowire="byName" (bean的id的取值)
default-autowire="byType"
Bean的作用域
singleton 默认
prototype
Aop:面向切面编程
AOP(Aspect Oriented Programming )的目的即在
正常的业务操作之外增加的附加操作通过切入点(pointcut)指
名进行哪些切面、
aop:动态代理、
代理模式:
静态代理:代理对象和目标对象实现统一接口
动态代理:运行时候动态加上

IUserDao{
saveUser();
deleteUser();
}
Spring aop:
<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 ——表示不会开始或加入事务,如果事务已存在,抛出异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值