Spring IOC 和AOP

Spring是什么?

Spring提供了很多轻量级应用开发实践的工具集合,这些工具集以接口、抽象类、或工具类的形式存在于Spring中。通过使用这些工具集,可以实现应用程序与各种开源技术及框架间的友好整合。比如有关jdbc封装的数据访问工具Spring
JDBC,有关编写单元测试的spring test包以及spring-mock,有关访问动态脚本语言的Spring
Script,另外还有发送邮件的工具Spring Mail、日程及任务处理工具Spring scheduling等。
可以这么说,大多数企业级应用开发中经常涉及到的一些通用的问题,都可以通过Spring提供的一些实用工具包轻松解决
这是Spring架构包括的6大模块:
在这里插入图片描述

Spring的优点有哪些?

  1. 方便解耦,简化开发 (高内聚低耦合) Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理
    spring工厂是用于生成bean
  2. AOP编程的支持 Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
  3. 方便集成各种优秀框架
    Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
  4. 声明式事务的支持 只需要通过配置就可以完成对事务的管理,而无需手动编程
  5. 方便程序的测试 Spring对Junit4支持,可以通过注解方便的测试Spring程序

Spirng中的两个核心概念:IOC和AOP

控制反转IOC(Inversion of Control)

  • ioc,控制反转,这个指的就是我们获取对象的方式进行反转了,改变了。在使用spring之前是需要手动new出来的,是我们主动获取的。使用spring之后,是将这个获取的过程交给spring来管理,我们只需要告诉spring你需要什么就行了,它就会把东西给你。

在这里插入图片描述这是ioc的一个基本流程图

面向切面编程AOP(aspect-oriented programming)

  • AOP:面向切面,是一种编程思想,OOP的延续。将系统中非核心的业务提取出来,进行单独处理。比如事务、日志和安全等。这个简单来说就是可以在版一段程序之前或者之后做一些事。
    Spring 的AOP和IOC都是为了解决系统代码耦合度过高的问题。使代码重用度高、易于维护。
    不过AOP和IOC并不是spring中特有的,只是spring把他们应权用的更灵活方便
  • AOP底层用的代理模式,默认目标类实现了接口用jdk的动态代理,动态代理用的是反射,没有实现接口用cglib写字节码文件,cglib用的是asm,ioc用的是工厂模式,顶级类是beanfactory,常用类是它的子类applicationcontext的实现类,支持国际化,aop的作用是抽取通用业务逻辑,使代码解耦合,增加可理解性,可扩展性,ioc的作用是使改变类变得容易,内存管理

在这里插入图片描述这是aop的一个基本流程图

在运行的情况下,这俩个圈一个是IOC,一个是Aop的应用
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值