Spring 框架是由于软件开发的复杂性而创建的。Spring 使用的是基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。
Spring
一. Spring Framework
Spring 是一个轻量级框架,目的是为了让对象之间的耦合性降低(解耦),方便后期代码的维护;
Spring 本质上就是一个 Bean 工厂,应用程序中所有的对象生命周期都是由 Spring 来管理的;
二. Spring 中对象的注入方式
- set 注入(实体类中的属性必须有 set 方法)
- 构造方法注入(实体类中必须有带参数的构造方法)
三. Spring 对象模式
Spring 的配置文件中,一个 bean 标签代表一个对象,创建的时候默认是采取单例模式,若想采取原型模式,则要给 bean 标签加上
scope="prototype"
- 单例模式
public class Single {
// 自身成为自身的静态属性
private static Single s = null;
// 构造方法私有化
private Single() {}
// 提供一个外部可访问的静态方法
public static synchronized Single getSingle() {
if (s == null) {
s = new Single();
}
return s;
}
}
- 原型模式 与单例模式相反,每次获取的对象都是新的对象
- 工厂模式 根据配置文件,动态的获取一组类中某个类的实例,一般来讲这一组类都实现了同一个接口或继承了同一个类
- 代理模式
- Hibernate 懒加载返回的是一个代理对象
- Struts 的 action 代理
四. Spring 核心
- IOC(控制反转)/ DI(依赖注入)
- AOP(面向切面编程)
IOC / DI
在没有出现 Spring 框架之前,一个对象调用另一个对象的方法时,需要先在当前对象中创建出另一个对象,这些对象之间才有了关系(耦合性较高),而Spring 框架,应用程序中所有的对象都是由 Spring 容器来管理它们的生命周期,此时一个对象需要调用另一个对象的方法时,Spring 容器会把相对应的对象给你,则不需要在当前类创建新的对象
把 SessionFactory 对象注入到 Dao 层,把 Dao 层对象注入到 Service 层,把 Service 层对象注入到 Action 层
AOP
在程序运行到某一个点时(切入点),使程序暂时停下来,去执行人为切入的一段代码,再继续执行原来的业务逻辑代码,切入的代码并不会影响到原来业务逻辑代码的执行,一般用于事务管理或日志管理
静态工厂注入,实例工厂注入
五. Spring 的通知类型
- 前置通知:程序执行到切入点(Service 层的方法)之前执行切入的代码
- 后置通知:程序执行到切入点(Service层的方法)之后执行切入的代码
- 异常通知:切入点抛出异常
- 环绕通知
- 引入通知
六. SSH 框架整合
- 创建实体类,配置映射文件,通过 Hibernate SchemaExport 对象创表
- 编写 Dao 层接口和实现类(封装 BaseDao)
- 编写 Service 层接口和实现类
- 在
web.xml
中配置 Struts2 的核心过滤器,创建 Action,并在struts.xml
中配置 Action 信息 - 在
web.xml
中配置 Spring 的监听器,并指定读取的文件路径 - 在 Spring 的配置文件中配置:dataSource,sessionFactory,transactionManager(事务管理器),tx:advice(事务传播特性),aop(面向切面编程)
七. Spring 容器什么时候被创建?
Tomcat 服务器启动的时候,会读取 web.xml
配置文件,加载 Spring 的监听器,Spring 监听器此时就会去读取 Spring 的配置文件(applicationContext.xml) 后实例化所有的对象
Original: https://www.cnblogs.com/xiqingbo/p/java-25.html
Author: Schieber
Title: Spring 学习笔记
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/598688/
转载文章受原作者版权保护。转载请注明原作者出处!