Spring的工作原理以及工作方式

      java面试中考得最多的就是Spring工作原理,SpringMVC的原理,数据库优化,JVM调优,多线程安全,反射,序列化和反序列化等。今天在这里就先来说说第一个(Spring的工作原理)其他的各个内容简介具体可以在我的博客首页可以查看(https://blog.csdn.net/qq_37840993,下面就来所说Spring的一些常用的知识。

    关于spring问的最多的问题就是关于Spring的工作原理以及其工作方式。下面就是我个人总结的关于Spring的工作原理以及其工作方式的回答,愿对各位有所帮助:

Spring的工作原理:

首先要记住一点的是:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。

使用Spring的目的:之所以使用Spring是为了让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类来说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象)

Spring里面最经典的设计模式就是:模板方法模式(这是一个很常用的设计模式,具体的我就在这里不多说了,需要了解的请参考:https://www.jianshu.com/p/0758147eda48{这是我在简书上看到的一个关于模板方法模式的网页}),但是Spring里面的配置是非常多的,但是个人觉得Spring里的精华与核心也就以下两点:

Spring的AOP和IOC:

IOC(Inversion of control):控制反转

概念:控制反转是指控制权由对象本身转向容器,由容器根据配置文件去创建实例并创建各个实例之间的依赖关系。

核心:bean工厂,在Spring中,bean工厂创建的各个实例称之为bean

AOP(Aspect-Oriented Programming):面向切面编程

代理方式:2种

             1、静态代理

                  1.1、针对每个具体类分别编写代理类

                  1.2、针对一个接口编写一个代理类

             2、动态代理

                  2.1、针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的proxy类为各个接口动态的生成代理类

动态代理:不用写代理类,虚拟机根据真实对象实现的接口产生一个类,通过类实例化一个动态代理,在实例化动态代理时将真实对象及装备注入到动态代理中,向客户端公开的是动态代理,当客户端调用动态代理方法时,动态代理根据类的反射得到真实对象的Method,调用装备的invoke方法,将动态代理、 Method、方法参数传与装备的invoke方法,invoke方法在唤起method方法前或后做一些处理。

1、产生动态代理的类:java.lang.refect.Proxy 

2、装备必须实现InvocationHandler接口的invoke方法

具体需要对Spring了解更多的内容的用户请访问Spring的官网:https://spring.io/

本文章参考于:https://blog.csdn.net/boonya/article/details/60961908 


以上内容纯属个人理解,如有雷同,纯属巧合,本人不做任何责任承担


猜你喜欢

转载自blog.csdn.net/qq_37840993/article/details/80011267