美文网首页我爱编程
Spring框架(一)——Spring IOC、AOP总结

Spring框架(一)——Spring IOC、AOP总结

作者: 超级小江 | 来源:发表于2018-01-28 21:31 被阅读97次

Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE开源框架。

spring.jpg

Spring框架有许多组件应用于web开发的不同层次(如上图)

1. Spring Core:

Core封装包是框架的最基础部分,提供IOC和依赖注入特性。这里的基础概念>是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式>的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。

2.Spring Context:

构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。

3.Spring DAO:

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

4.Spring ORM:

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

5.Spring AOP:

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

6.Spring Web:

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

7.Spring Web MVC:

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

8.Spring核心思想:

IOC(控制反转),AOP(面向切面编程)

IoC的概念

IoC,Inversion of Control,控制反转;把创建对象的权利交给框架(框架创建对象时会用到DI即依赖注入)
之前Spring核心思想没有写依赖注入,其实IOC和DI为一个概念,IOC把创建对象的权利交给框架,其实具体交个框架的权利就是使框架能创建对象并初始化,初始化即将依赖注入到容器中的对象的实现。

IoC的类型

(1) 基于特定接口(侵入式方案)
(2) 基于set方法
(3) 基于构造器

IoC实现方式

(1)使用XML配置的方式实现IOC
(2)使用注解配置IoC
(3)自动装配
(4)零配置实现IoC
(前两项为常用方式,具体实现会有博客产出)

Spring容器

Spring容器负责生成、组装、销毁组件,并负责事件处理、国际化等功能。
(1) BeanFactory
核心容器,负责组件生成和装配
实现主要包括Xml BeanFactory
(2) ApplicationContext
(3) WebApplicationContext

IOC使用

以使用ApplicationContext容器为例
1.编写封装Bean


AppClass.java

2.配置xml文件


SpringBean.xml
<bean>标签中有多种属性(常用有id、class、scope、name属性;其中scope又有许多属性值如下)
  • singleton 默认值、单例的(只创建一个对象)
  • prototype 多例的
  • request WEB项目中,Spring创建一个Bean对象,将对象存入到request域中
  • session WEB项目中,Spring创建一个Bean对象,将对象存入到session域中
  • globaSession WEB项目中,应用在Porlet(单点登录)环境中,如果没有Porlet环境,那么globalSession相当于session。
    3.使用IoC容器获取bean


    App.java

    4.运行结果


    image.png

AOP核心概念

1、横切关注点
对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点
2、切面(aspect)
类是对物体特征的抽象,切面就是对横切关注点的抽象
3、连接点(joinpoint)
被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器
4、切入点(pointcut)
对连接点进行拦截的定义
5、通知(advice)
所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类
6、目标对象
代理的目标对象
7、织入(weave)
将切面应用到目标对象并导致代理对象创建的过程
8、引入(introduction)
在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段

Spring AOP支持

Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。因此,AOP代理可以直接使用容器中的其它bean实例作为目标,这种关系可由IOC容器的依赖注入提供。Spring创建代理的规则为:
1、默认使用Java动态代理来创建AOP代理,这样就可以为任何接口实例创建代理了
2、当需要代理的类不是代理接口的时候,Spring会切换为使用CGLIB代理,也可强制使用CGLIB
3.进行AOP编程的关键就是定义切入点和定义增强处理,一旦定义了合适的切入点和增强处理,AOP框架将自动生成AOP代理,即:代理对象的方法=增强处理+被代理对象的方法。(具体实现新开博文)

相关文章

  • Spring中的两大核心(Spring是一个IOC和AOP容器框架) IOC与aop IOC(spring的核心思...

  • Spring AOP实战和源码解析

    Spring AOP简介 说起Spring框架,我们最先想到的就是IOC和AOP了,如果说IOC是Spring的核...

  • Java 框架学习之 Spring

    一. Spring 框架介绍。 Spring 框架是 一个基于 IoC 和 AOP 的 J2EE 框架。IoC(控...

  • spring你好吗?

    Spring 即是一个AOP框架,也时一个IOC容器。 c3)借助于Spring AOP,Spting IoC能够...

  • 2020-03-13 spring 框架

    Spring框架 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架 IOC 控制反转(In...

  • 总结

    1.spring IOC/AOP/MVC spring是一个轻量级框架,IOC控制反转降低耦合度,AOP可以把应...

  • 初见spring

    框架 spring IOC AOP 配置文件 IOC/DI 依赖注入(Dependecy Injection) ...

  • spring、springmvc、springboot、stru

    spring Spring通过控制反转-ioc、切面编程-aop,实现分层的java开发框架。 Spring将ja...

  • Spring框架基础学习(一)

    Spring是什么 spring是一个轻量级的 控制反转(Ioc)和面向切面(AOP)的容器框架 IOC: ...

  • Spring内存马

    Spring是IOC和AOP的容器框架,SpringMVC则是基于Spring功能的Web框架。Tomcat内存马...

网友评论

    本文标题:Spring框架(一)——Spring IOC、AOP总结

    本文链接:https://www.haomeiwen.com/subject/igdoaxtx.html