首页 > 其他分享 >SpringIOC和SpringAOP

SpringIOC和SpringAOP

时间:2023-05-15 23:37:44浏览次数:44  
标签:SpringIOC 框架 对象 Spring 代理 AOP SpringAOP IoC

作为一个Spring使用者条件:

拥有深入的Spring框架知识和开发经验,能够熟练地运用Spring框架来构建复杂的应用程序。

了解Spring框架的核心概念和设计思想,如控制反转(IoC)、依赖注入(DI)、面向切面编程(AOP)等,并能灵活运用这些概念来解决实际问题。

熟悉Spring框架中各个模块的功能和用法,如Spring MVC、Spring Data、Spring Security等,能够根据不同的应用场景选择合适的模块来使用。

掌握Spring Boot的使用,能够使用Spring Boot快速构建应用程序,省去繁琐的配置过程,提高开发效率。

此外,还要具备较强的调试和优化能力,能够分析和解决复杂的应用程序问题,提高系统性能和稳定性。

 

IoC和AOP是Spring框架中最重要的两个概念,它们分别代表了控制反转和面向切面编程的思想。

下面我将分别介绍它们的理解和实现原理:

1. 控制反转(IoC):IoC是一种设计思想,它的核心是将对象的创建和依赖注入交给容器来完成,这样可以减少对象之间的耦合度,提高程序的可维护性和可扩展性。在Spring框架中,IoC通过BeanFactory和ApplicationContext实现,它们提供了创建和管理Bean的功能,以及依赖注入的功能。实现原理是通过反射机制来实例化对象并解决对象之间的依赖关系,具体可以分为以下几个步骤:

1.1. 加载配置文件并解析其中的Bean定义,将其封装成BeanDefinition对象。

1.2. 根据BeanDefinition对象创建Bean实例,并将其放入Bean容器中。

1.3. 解析Bean之间的依赖关系,将依赖的Bean注入到对应的属性中。

2. 面向切面编程(AOP):AOP是一种编程范式,它的核心是通过在不改变原有代码的情况下,为程序添加额外的功能,如日志、事务、安全性控制等。在Spring框架中,AOP通过动态代理来实现,它将切面代码织入到目标对象的方法调用中,从而实现了横向抽取代码的功能。实现原理是通过JDK动态代理和CGLIB动态代理来创建代理对象,代理对象中包含了原始对象和切面代码,从而实现了AOP的功能。

总之,IoC和AOP是Spring框架中非常重要的概念,它们的实现原理涉及到很多底层的技术,如反射、动态代理等。了解它们的实现原理可以更好地理解Spring框架的工作方式,从而更好地使用和扩展Spring框架。

 

1、IOC 控制反转

IoC(Inverse of Control:控制反转)是⼀种设计思想,就是将原本在程序中⼿动创建对象的控制权,交由Spring框架来管理。 IoC 在其他语⾔中也有应⽤,并⾮ Spring 特有。 IoC 容器是 Spring⽤来实现 IoC 的载体, IoC 容器实际上就是个Map(key,value),Map 中存 放的是各种对象。将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注⼊。这样可以很⼤程度上简化应⽤的开发,把应⽤从复杂的依赖关系中解放出来。 IoC 容器就像是⼀个⼯⼚⼀样,当我们需要创建⼀个对象的时候,只需要配置好配置⽂件/注解即可,完全不⽤考虑对象是如何被创建出来的。

DI 依赖注⼊ DI:(Dependancy Injection:依赖注⼊)站在容器的⻆度,将对象创建依赖的其他对象注⼊到对象中。

2、AOP 动态代理

AOP(Aspect-Oriented Programming:⾯向切⾯编程)能够将那些与业务⽆关,却为业务模块所共同调⽤的逻辑或责任(例如事务处理、⽇志管理、权限控制等)封装起来,便于减少系统的重复代 码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。 Spring AOP就是基于动态代理的,如果要代理的对象,实现了某个接⼝,那么Spring AOP会使⽤ JDKProxy,去创建代理对象,⽽对于没有实现接⼝的对象,就⽆法使⽤ JDK Proxy 去进⾏代理 了,这时候Spring AOP会使⽤基于asm框架字节流的Cglib动态代理,这时候Spring AOP会使⽤ Cglib 生成⼀个被代理对象的⼦类来作为代理。

标签:SpringIOC,框架,对象,Spring,代理,AOP,SpringAOP,IoC
From: https://www.cnblogs.com/SuperGuoYa/p/17403440.html

相关文章

  • SpringIOC理论推导
    IOC理论引入原来实现业务的步骤:Dao层接口Dao层实现类Service层接口Service层实现类eg:Dao层接口publicinterfaceUserDao{voidgetUser();}Dao层实现类publicclassUserDaoImplimplementsUserDao{publicvoidgetUser(){System.ou......
  • 5.数据交换格式与 SpringIOC 底层实现
    数据交换格式与SpringIOC底层实现一、课程目标XML和JSONJava反射机制手写SpringIOC二、什么是数据交换格式客户端与服务器常用数据交换格式xml、json、html三、数据交换格式用场景移动端(安卓、IOS)通讯方式采用http协议+JSON格式走restful风格。很多互......
  • 14.SpringAOP 编程
    SpringAOP编程课程目标代理设计模式Spring的环境搭建SpringIOC与AOPSpring事物与传播行为一、代理模式1.1概述代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理访问目标对象。这样好处:可以在目标对象实现的基础上,增强额外的功能操作。(扩......
  • 开发日志02-解决`response`和SpringAop层相关冲突报错问题
    解决一个Bug在昨晚的开发中遇到了一个非常令人头疼的Bugjava.lang.IllegalStateException:getOutputStream()hasalreadybeencalledforthisresponse报错信息如下......
  • 001.SpringIoc初体验
    1.创建entity(Apple、Child)packagecom.imooc.spring.ioc.entity;publicclassApple{privateStringtitle;privateStringcolor;privateStringori......
  • 浅谈SpringAOP功能源码执行逻辑
    如题,该篇博文主要是对Spring初始化后AOP部分代码执行流程的分析,仅仅只是粗略的讲解整个执行流程,喜欢细的小伙伴请结合其他资料进行学习。在看本文之前请一定要有动态代理的......
  • springIOC和AOP
    IOC(InverseofControl:控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。Ioc在其他语言中也有应用,并非spring特有。Ioc容器是Spring用......
  • SpringAop是使用JDK代理还是使用CGLIB代理实现
    先说结论:在spring-aop的默认逻辑中,aop默认优先使用JDK代理,前提是目标对象是基于接口的实现类。源码如下:入口在AbstractAdvisingBeanPostProcessor.postProcessAfterInitia......
  • 【Logback+Spring-Aop】实现全面生态化的全链路日志追踪系统服务插件「SpringAOP 整合
    承接前文针对于上一篇【Logback+Spring-Aop】实现全面生态化的全链路日志追踪系统服务插件「Logback-MDC篇」的功能开发指南之后,相信你对于Sl4fj以及Log4j整个生态体系的功......
  • 001. SpringIoc 和 SpingAop 、SpringJdbc
         ......