springioc和aop原理_描述spring框架的工作原理

springioc和aop原理_描述spring框架的工作原理Spring的Ioc底层是怎么实现的?一、SpringIoc是什么IOC:控制反转,就是把对象的创建交给Spring来做二、SpringIoc所使用的技术1、xml配置文件2、dom4j解析XML文件3、工厂设计模式4、反射三、SpringIoc的具体实现第一步:配置xml文件 <bean id="dic" class="com.zhy.springIoc.model.Dic">&lt…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

SpringIoc底层是怎么实现的?

一、SpringIoc是什么

IOC:控制反转,就是把对象的创建交给Spring来做

二、SpringIoc所使用的技术

1、xml配置文件

2、dom4j解析XML文件

3、工厂设计模式

4、反射

三、SpringIoc的具体实现

第一步:配置xml文件

 <bean id=“dic” class=“com.zhy.springIoc.model.Dic”></bean>

第二步:创建工厂类 使用 dom4j解析配置+反射

springioc和aop原理_描述spring框架的工作原理

    首先要知道xml文件的用处,主要用到的有2个,一是配置信息,二是存储信息 这些信息都是非计算机专业人士能看懂的,这也是为什么要有xml的原因!
那么既然配置了信息,服务器就要得到这些信息,怎么样得到,就要通过解析工具,那么dom4j就是这样的一个解析框架,它不但能够解析,而且可以修改其中的文件,他是通过树形结构,通过节点来进行解析,具体的解析方法参考相关书籍!


SpringAOP底层是怎么实现的?

Spring中的AOP底层实现原理:动态代理;

/* spring的AOP底层是由 JDK提供的动态代理技术 和 CGLIB(动态字节码增强技术)实现。

**JDK动态代理:**Jdk动态代理只针对于接口操作。

CGLIB:可以针对没有接口的java类和有接口的java类。*/

动态代理,照我的理解就是,在不修改原有类对象方法的源代码基础上,通过代理对象实现原有类对象方法的增强,也就是拓展原有类对象的功能。

JDK动态代理中包含一个类和一个接口:
InvocationHandler接口: 
public interface InvocationHandler { 
public Object invoke(Object proxy,Method method,Object[] args)

throws Throwable; 

参数说明: 
Object proxy:指最终生成的代理实例,一般不会用到。 
Method method:要调用的方法 
Object[] args:方法调用时所需要的参数 

可以将InvocationHandler接口的子类想象成一个代理的最终操作类

Proxy类:
Proxy类是专门完成代理的操作类,可以通过此类为一个或多个接口动态地生成实现类,此类提供了如下的操作方法:
public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException 
参数说明: 
ClassLoader loader:类加载器 
Class<?>[] interfaces:得到全部的接口 
InvocationHandler h:得到InvocationHandler接口的子类实例 

 

Ps:类加载器 

Proxy类中的newProxyInstance()方法中需要一个ClassLoader类的实例,ClassLoader实际上对应的是类加载器,在Java中主要有一下三种类加载器; Booststrap ClassLoader:此加载器采用C++编写,一般开发中是看不到的; Extendsion ClassLoader:用来进行扩展类的加载,一般对应的是jre\lib\ext目录中的类; AppClassLoader(默认)加载classpath指定的类,是最常使用的是一种加载器。

动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类。

java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。

例子代码:

1. 先创建一个接口:

 springioc和aop原理_描述spring框架的工作原理

2. 再创建一个接口实现类:

 springioc和aop原理_描述spring框架的工作原理

3. 实现InvocationHandler 接口

 springioc和aop原理_描述spring框架的工作原理

4. 测试代码:

springioc和aop原理_描述spring框架的工作原理

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192367.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • EasyMock PowerMock 的简单使用(with spring Autowired)

    EasyMock PowerMock 的简单使用(with spring Autowired)

    2021年5月9日
    139
  • C语言贪吃蛇代码_c语言贪吃蛇游戏

    C语言贪吃蛇代码_c语言贪吃蛇游戏一、C语言贪吃蛇代码实现前言设计贪吃蛇游戏的主要目的是让大家夯实C语言基础,训练编程思维,培养解决问题的思路,领略多姿多彩的C语言。贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏,也就是实现贪吃蛇的基本功能,比如在地图中,用“↑↓←→”控制移动蛇的方向,吃掉食物之后,蛇身体会变长等等。。。。首先我们得分析,游戏中我们会碰见的一些情况。①蛇的部分,蛇的身子是一节一节的,此时最容易联想到的数据结构就是顺序表,链表,如果把蛇比做顺序表或者链表,在之后吃到食物的时候,身子肯定会变长,

    2025年9月6日
    6
  • Git的安装教程_什么叫做安卓手机

    Git的安装教程_什么叫做安卓手机git的安装教程

    2025年10月2日
    6
  • kali最新版安装教程_kali linux安卓版安装

    kali最新版安装教程_kali linux安卓版安装百度搜索kali,就是它了顺着箭头安装,建议使用网盘或者IDM下载,浏览器等待时间太长。下载后解压文件夹,然后打开VMware输入默认的虚拟机账号密码,均为kali选择第一个,然后我们的kali就安装好了。之后就是获取root最高权限方便我们使用kaili所有的工具点击openterminalhere输入sudopasswdroot回车,输入原来密码:kali设置新密码.之前的用户会被注销,登录新的账号回到桌面再次点击openterminalhere,可以看到我们的权限已

    2025年6月7日
    6
  • 第9章 舵机控制

    第9章 舵机控制有一种电机可以在程序的控制下 在一定范围内连续改变输出轴角度并且可以保持住 这种电机最早被用在航模和船模等遥控模型中 控制各种舵面的转动 这就是舵机 现在舵机除了运用在遥控模型中 也大量的运用在各种机器人 机械臂的关节以及智能小车的转向机构中 下图就是一种标准舵机的外形 9 1 舵机分类 1 按照舵机的控制电路可以分为 模拟舵机和数字舵机 模拟舵机和数字舵机的机械结构可以说是完全相同的 模拟舵机的控制电路为纯模拟电路 需要一直发送目标信号 才能转到指定的位置 响应速度较慢 无反应区较大 数字舵

    2025年12月9日
    5
  • Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:云深i不知处 blog.csdn.net/mu_wind/article/details/109516995 …

    2021年6月27日
    86

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号