三 Spring

一   MVC思想

M: Model 数据模型(User.java)

V: View 视图(页面jsp html ...)

C: Controller 控制器(控制业务逻辑web层以及dao层)

注意:MVC是一种思想,与语言无关

二   框架介绍

三   Spring名词(重点)

IOC: 控制反转(Inversion of Control,缩写为IoC),面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中

DI:   其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)

AOP:  在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

Aop 能做什么?

AOP 主要应用于日志记录,性能统计,安全控制,事务处理等方面,实现公共功能 性的重复使用。

Aop 带来的好处

1. 降低模块与模块之间的耦合度,提高业务代码的聚合度。(高内聚低耦合)

2. 提高了代码的复用性。

3. 提高系统的扩展性。

四   技术栈

SSH: Struts2 + Spring + Hibernate

SSM: Spring + SpringMVC + MyBatis

五   搭建Spring环境(重点)

1.创建maven项目

2.添加项目依赖

3.编程测试代码

4.编写配置文件

5.执行单元测试

6.加载配置文件,获取HelloService的Bean对象

六   IOC容器

IOC: Inversion of Control,缩写为IoC 控制反转

七   手动模拟IOC容器(了解)

1.xml解析(dom4j + xpath)

2.反射

3.集合(List Map ...)

八   多文件加载(了解)

方法一:

方法二:

九   IOC中实例化bean的3种方式

1.构造器(默认 80%)

2.静态工厂(10%)

可以控制bean的初始化

3.实例化工厂(10%)

框架整合

十   DI依赖注入

1.set注入(默认,常用)

(1)UserService中必须存在setUserDao方法

(2)配置文件

(3)测试

2.构造器注入

构造器注入可能会产生循环依赖问题,所以最好采用set注入

3.静态工厂注入

4.实例化工厂注入

和静态工厂差不多

5.p标签   c标签

p标签:

c标签:

6.集合注入(了解)

十一   注解注入

1.@Autowired

(1)由spring框架提供

(2)默认通过类型进行匹配

2.@Resource

(1)由jdk提供

(2)默认通过名字匹配

(3)如果不指定名字,名字为空,则通过类型匹配

十二   Bean自动扫描

1.@Repository

标记dao层

2.@Service

标记service层

3.@Controller

标记控制层web      controller

4.@Component

标记任意层

十三   代理模式

设计原则:

(1)代理类  与  委托类  具有相似的行为(共同)

(2)代理类增强委托类的行为

1.静态代理

2.动态代理

实现方式有两种

(1)jdk方式

原理:基于接口实现

局限:很多类没有实现接口,那么jdk就无法实现代理

(2)cglib方式

原理:基于既承思想

作用:针对没有实现接口的类,进行代理

 

总结:与jdk提供的代理区别:

Proxy:委托类必须有接口,制作过程比较快,执行慢

cglib:委托类可以没有接口,继承思维来实现相似性,制作代理过程比较慢,执行快.主要解决没有接口类的代理实现

十四   AOP

面向切面编程      Aspect      Oriented      Programing

1.连接点

每一个方法

2.切入点

匹配规则

3.通知

拦截后的操作

(1)前置通知

(2)后置通知

(3)返回通知

(4)异常通知

(5)环绕通知

4.切面

切入点与通知的结合,决定了切面的定义,切入点定义了要拦截哪些类的 哪些方法,通知则定义了拦截过方法后要做什么,切面则是横切关注点的抽象, 与类相似,类是对物体特征的抽象,切面则是横切关注点抽象。

5.目标对象

被代理的目标对象

6.织入和引入

将切面应用到目标对象并生成代理对象的这个过程即为织入。

在不修改原有应用程序代码的情况下,在程序运行期为类动态添加方法或 者字段的过程称为引入

十五   常问的面试题

1. 代理模式实现三要素

(1)接口定义

(2)目标对象 与代理对象必须实现统一接口

(3)代理对象持有目标对象的引用 增强目标对象行为

2. 代理模式实现分类以及对应区别

静态代理:手动为目标对象制作代理对象,即在程序编译阶段完成代理对象的创建

动态代理:在程序运行期动态创建目标对象对应代理对象。

jdk 动态代理:被代理目标对象必须实现某一或某一组接口 实现方式 通过回 调创建代理对象。

cglib 动态代理:被代理目标对象可以不必实现接口,继承的方式实现。

动态代理相比较静态代理,提高开发效率,可以批量化创建代理,提高代码复用率。

3. Aop 理解

(1) 面向切面,相比 oop 关注的是代码中的层 或面

(2) 解耦,提高系统扩展性

(3)提高代码复用

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值