热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringIOC、AOP、Bean入门了解(简单笔记)

文章目录Spring概述Spring框架SpringIOC及Bean容器IOCBean作用域Bean装配生命周期AwareBean的自动装配SpringAOP基本概念AOP基本概念

文章目录

  • Spring概述
    • Spring框架
  • Spring IOC 及Bean容器
    • IOC
    • Bean作用域
  • Bean装配
    • 生命周期
    • Aware
    • Bean的自动装配
  • Spring AOP基本概念
    • AOP基本概念
    • advice
    • Spring的AOP实现
    • 有无接口的Spring AOP实现区别


Spring概述

Spring框架


  • 框架的特点
    • 半成品
    • 封装了特定的处理流程和控制逻辑
    • 成熟的、不断升级的软件
  • 框架和类库的区别
    • 框架一般是封装了逻辑、高内聚的,类库则是松散的工具组合
    • 框架专注于某一领域,类库则是更加通用
  • 为什么使用框架
    • 软甲系统日趋复杂
    • 重用度高,开发效率和质量提高
    • 专注于对领域的了解,使需求分析更充分
    • 易于上手、快速解决问题

Spring IOC 及Bean容器

IOC


  • 面向接口编程
    • 面向接口编程中的“接口”适用于隐藏具体实现和实现多态性的组件
  • IOC概念
    • IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护
    • DI(依赖注入)是一种实现方式
    • 目的:创建对象并且组装对象之间的关系
    • 类比



  • IOC利处
    • 不用创建对象
    • IOC能自己管理对象

Bean作用域


作用域描述
singleton(默认)单例,指一个Bean容器中只存在一份
prototype每次请求创建新的实例,destroy方式不生效
requestHTTP request中有效
session当前会话有效
global seesion基于protlet的web中有效,如果是在web中,同session

Bean装配

生命周期


  • 定义

  • 初始化→\rightarrow配置init-method 或者 实现接口

    org.springframework.beans.factory.InitializingBean

  • 使用

  • 销毁→\rightarrow配置destroy-method 或者 实现接口

    org.springframework.beans.factory.DisposableBean

  • 配置全局默认初始化、销毁方法

    <bean id&#61;"beanLifeCycle" class&#61;"com.imooc.lifecycle.BeanLifeCycle" init-method&#61;"start" destroy-method&#61;"stop"></bean>


Aware


  • Spring中提供了一些以Aware结尾的接口 ,实现了Aware接口的bean在被初始化之后,可以获取相应资源
  • 通过Aware接口,可以对Spring相应资源进行操作( 一定要慎重)
  • 为对Spring进行简单的扩展提供了方便的入口

Bean的自动装配


方式描述
No根据属性名自动装配
byName根据属性名装配
byType如果容器中存在一个与指定属性类型相同的bean ,那么将与该属性自动装配;如果存在多个该类型bean ,那么抛出异常,并指出不能使用byType方式进行自动装配;如果没有找到相匹配的bean ,则什么事都不发生
constructor与byType方式类似,不同之处在于它应用于构造器参数。如果容器中没有找到与构造器参数类型一致的bean&#xff0c;那么抛出异常



Spring AOP基本概念

AOP基本概念


  • AOP概念→\rightarrowAspect Oriented Programming的缩写&#xff0c;意为:面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术

  • 主要功能→\rightarrow日志记录&#xff0c;性能统计&#xff0c;安全控制&#xff0c;事务处理&#xff0c;异常处理等等

  • AOP实现方式

    • 预编译→\rightarrowAspectJ
    • 运行期动态代理( JDK动态代理、CGLib动态代理)

名称说明
切面一个关注点的模块化,这个关注点可能会横切多个对象
连接点程序执行过程中的某个特定的点
通知在切面的某个特定的连接点上执行的动作
切入点匹配连接点的断言,在AOP中通知和一一个切入点表达式关联
引入在不修改类代码的前提下,为类添加新的方法和属性
目标对象被一个或者多个切面所通知的对象
AOP代理AOP框架创建的对象,用来实现切面契约(aspectcontract)(包括
通知方法执行等功能)
织入把切面连接到其它的应用程序类型或者对象上&#xff0c;并创建一个被
通知的对象,分为:编译时织入、类加载时织入、执行时织入

advice


名称说明
前置通知(Before advice)在某连接点( join point )之前执行的通知,但不能阻止连接点前的执行(除非它抛出一个异常)
返回后通知(After returning advice)在某连接点( join point )正常完成后执行的通知
抛出异常后通知(After throwing advice)在方法抛出异常退出时执行的通知
后通知(After(finally)advice)当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)
环绕通知(Around Advice)包围一个连接点( join point )的通知

Spring的AOP实现


  • 纯java实现,无需特殊的编译过程,不需要控制类加载器层次
  • 目前只支持方法执行连接点(通知Spring Bean的方法执行)
  • 不是为了提供最完整的AOP实现(尽管它非常强大) ;而是侧重于提供- -种AOP实现和SpringIoC容器之间的整合,用于帮助解决企业应用中的常见问题
  • Spring AOP不会与AspectJ竞争,从而提供综合全面的AOP解决方案

有无接口的Spring AOP实现区别


  • Spring AOP默认使用标准的JavaSE动态代理作为AOP代理,这使得任何接口(或者接口集)都可以被代理

  • Spring AOP中也可以使用CGLIB代理(如果一个业务对象并没有实现一个接口)


推荐阅读
author-avatar
凌亂的回譩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有