SSM学习笔记六、SSm框架
1.1 Spring Framwork框架
shiro安全框架Day03
1.1.1 何为框架
Mvc 结构
1.1.1.1 何为软件?
软件:是程序和⽂档的⼀个集合,是⽤来解决问题.
例如:
为了⽅便购物:电⼦商务系统(京东,天猫)
为了解决打车难的问题(滴滴)
为了解决最后⼀公⾥问题(OFO,摩拜,…)
…
…..
从软件编程⾓度分析,软件具体解决了那些问题?
解决数据输⼊问题(键盘输⼊,语⾳输⼊)
解决数据处理问题(⽇志记录,数据的计算,数据推送问题)
解决数据输出问题(数据展现,……)
站在软件设计的⾓度,采⽤哪种⽅式解决问题会更好?
⾯向过程?(着眼点解决问题的基本算法及步骤)
⾯向对象?(着眼点使⽤哪些对象解决问题)
在这些过程中,对象如何设计,对象依赖管理,内存管理如何实现?
……
接⼝:标准
抽象类:标准的⾮完全实现(半成品)
具体类:接⼝或抽象类的完美实现(成品)
1.1.1.2 何为框架(Framework)?
框架是软件编程中对特定问题的封装和抽取.是⼀个为了降低软件编程难度,提⾼软件运⾏性能,提⾼软件可维护性,可扩展性⽽推出的半成品.
例如spring,mybatis,…..
⽣活中的框架:简历的模板就构建⼀份完成简历的框架.
说明:框架应⽤及设计时应⽤三个维度进⾏考虑.
⾯向对象 (从静态⾓度进⾏分析,⼀个软件有哪些对象,对象有哪些属性与⾏为,对象与对象之间有什么关系,如何通过这些对象解决对应问题)
⾯向切⾯ (从动态⾓度进⾏分析,在对象运⾏时如何为对象扩展新的业务功能)
⾯向服务 (从服务⾓度进⾏细粒度控制,然后进⾏RPC调⽤)
分析现阶段做过的项⽬?
项⽬中采⽤的什么架构?
项⽬中分了⼏层,每⼀层有什么职责,层与层之间如何关联的?
项⽬中对象创建以及对象的管理如何实现的?
项⽬中的线程安全如何考虑的?
………
1.1.2 Spring 框架
1.1.
2.1 Spring 概述
1.1.
2.1.1 Spring 是什么?
Spring 是⼀个开源的控制反转和⾯向切⽚的容器⼯⼚框架(Framwork),主要是要从三个维度(⾯向对象,⾯向切⾯,⾯向服务)通过整合⼀定的资源解决软件中的⼀些相关问题.
从细节上spring核⼼主要解决如下⼏个问题:
对象的创建(通过⼯⼚创建) -- 底层通过反射实现
对象的管理(重点管理对象依赖关系) -- 底层通过内省实现
…
回顾我们需要⼀个对象时,是如何创建对象的?
直接创建(例如 new Point())
通过静态⼯⼚(例如 Instance(),Connection())
通过动态⼯⼚(基于配置与反射实现对象的创建,
例如ApplicationContext 本质上就是⼀个动态⼯⼚,具体可参考课堂
项⽬案例)
动态⼯⼚涉及到的知识点:
配置⽂件(xml)
流对象应⽤(IO)
xml⽂件的解析(dom4j,扩展了解sax,pull)
反射技术(Class)
1.1.
2.1.2 Spring 应⽤动机?
Spring 在JavaEE体系中最主要的动机是整理企业可整合资源然后提供⼀套完整的解决⽅案,例如.整合web技术,提供⼀套MVC架构应⽤
整合JDBC功能,提供⼀套数据持久化⽅案
整合安全框架(例如shiro),提供⼀套权限控制⽅案
整合定时任务调度框架,提供⼀套任务调度⽅案
整合消息中间件JMS,提供⼀些⾼并发处理⽅案
……………………..
回顾:Java中的定时任务如何实现?(Timer, ScheduledExecutorService)
1.1.
2.1.3 Spring 基本架构?
架构图中先了解如下⼏个部分
IOC (控制反转)
AOP (⾯向切⾯)
WEB (WEB-MVC)
ORM (对象关系映射)
…….
1.1.3 Spring IOC 基础应⽤
1.1.3.1 Spring底层实现案例
1.)准备⼯作:
2.)中⼼代码实现ApplicationContext.java⽂件:
3.)l配置⽂件
4.)测试类TestFactoryDemo01.java⽂件
1.1.3.2 Spring IOC 概述
Spring IOC 是实现了控制反转功能的⼀个容器对象,它要通过这个对象,实现对象之间依赖关系的管理.
⽬的:主要是实现对象之间解耦合.以提⾼程序的可维护及可扩展性.
Spring中的IOC(控制反转)功能如何实现?(借助DI:依赖注⼊)
说明: 对象关系
对象关系(java中对象的关系)
Is a (继承或实现)类继承
Has a (关联关系) 属性
Use a (依赖关系) ⽅法使⽤
Class Student extends Person{ //is a 关系
Computer c; //has a 关系
Public void set(){Math.Random(); //use a 关系 }
}
1.1.3.3 Spring Bean 容器
Spring Bean容器负责创建Bean对象,并管理bean对象. (底层根据元数据的描述与反射技术进⾏对象的创建-----底层是根据反射技术实现对象的创建和通过内省技术实现对象的管理)
Spring 中容器对象的⽗类类型为ApplicationContext类型,基于此类型Spring 容器还提供了很多具体类型,例
如 ClassPathXmlApplicationContext类型.
说明:
1)何为元数据?(描述数据的数据)
2)Java中常⽤的元数据表⽰形式?(xml,注解)
1.1.3.3.1 Spring Bean 容器元数据配置
本⼩节基于xml⽅式,配置spring相关信息
<?xml version="1.0"encoding="UTF-8"?>
<beans
xmlns="/schema/beans"
xmlns:p="/schema/p"
xmlns:xsi="/2001/XMLSchema-instance"
xmlns:context="/schema/context"
xmlns:tx="/schema/tx"
xmlns:aop="/schema/aop"
xmlns:mvc="/schema/mvc"
xmlns:util="/schema/util"
xmlns:jpa="/schema/data/jpa"
xsi:schemaLocation="
<bean id="date1"
class="java.util.Date"/>
</beans>
1.1.3.3.2 Spring Bean 容器对象的初始化
Spring 中ApplicationContext为容器类型的⽗类类型,在初始化时可以初始化具体的⼦类类型. ClassPathXmlApplicationContext ctx=
new ClassPathXmlApplicationContext(
"l");
1.1.3.3.3 Spring Bean 容器对象的使⽤
Date date1=(Bean("date1");
Date Bean("date1",Date.class);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论