广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java反射机制在Spring IOC中的应用详解
  • 662
分享到

Java反射机制在Spring IOC中的应用详解

2024-04-02 19:04:59 662人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录Java反射机制在springioc的应用下面是Spring通过配置进行实例化对象Spring的配置如下所示实现一下Spring底层处理原理反射机制、反射机制的作用、反射机制的功

Java反射机制在Spring ioC的应用

IOC:即“控制反转”,不是什么技术,而是一种思想。使用IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。

本篇文章主要讲解一下IOC底层实现的原理(反射),Bean容器的实现,就不对IOC的概念进行详述了。

在Spring的配置文件中,经常看到如下配置:


<bean id="courseDao" class="com.qcjy.learning.Dao.impl.CourseDaoImpl"></bean>

那么通过这样配置,Spring是怎么帮我们实例化对象,并且放到容器中去了了?对,就是通过反射!!!

下面是Spring通过配置进行实例化对象

并放到容器中的伪代码:


//解析<bean .../>元素的id属性得到该字符串值为“courseDao”
String idStr = "courseDao";
//解析<bean .../>元素的class属性得到该字符串值为“com.qcjy.learning.Dao.impl.CourseDaoImpl”
String classStr = "com.qcjy.learning.Dao.impl.CourseDaoImpl";
//利用反射知识,通过classStr获取Class类对象
Class<?> cls = Class.forName(classStr);
//实例化对象
Object obj = cls.newInstance();
//container表示Spring容器
container.put(idStr, obj);

通过解析xml文件,获取到id属性和class属性里面的内容,利用反射原理获取到配置里面类的实例对象,存入到Spring的bean容器中。

当一个类里面需要应用另一类的对象时,

Spring的配置如下所示


<bean id="courseService" class="com.qcjy.learning.service.impl.CourseServiceImpl">
     <!-- 控制调用setCourseDao()方法,将容器中的courseDao bean作为传入参数 -->
     <property name="courseDao" ref="courseDao"></property>
</bean>

我们继续用伪代码的形式来模拟

实现一下Spring底层处理原理


//解析<property .../>元素的name属性得到该字符串值为“courseDao”
String nameStr = "courseDao";
//解析<property .../>元素的ref属性得到该字符串值为“courseDao”
String refStr = "courseDao";
//生成将要调用setter方法名
String setterName = "set" + nameStr.substring(0, 1).toUpperCase()
  + nameStr.substring(1);
//获取spring容器中名为refStr的Bean,该Bean将会作为传入参数
Object paramBean = container.get(refStr);
//获取setter方法的Method类,此处的cls是刚才反射代码得到的Class对象
Method setter = cls.getMethod(setterName, paramBean.getClass());
//调用invoke()方法,此处的obj是刚才反射代码得到的Object对象
setter.invoke(obj, paramBean);

通过上面对Spring底层原理的分析,可以发现,其实并不难,用到的都是反射机制,通过反射实例化对象,存入到Spring的bean容器中。

只要在代码或配置文件中看到类的完整路径(包.类),其底层原理基本上使用的就是Java的反射机制。

反射机制、反射机制的作用、反射机制的功能

1、反射机制的作用

  • 通过java语言中的反射机制可以i操作字节码文件(读和修改字节码文件)
  • 通过反射机制可以操作代码片段(class文件)

2、Java反射机制的功能

  • 在运行时判断一个对象所属的类
  • 在运行时构造一个类的对象
  • 在运行时判断一个类所具有成员变量和方法
  • 在运行时调用一个对象的方法

3、反射机制相关的重要的类有哪些?

  • java.lang.Class : 代表整个字节码,代表一个类型,代表整个类。
  • java.lang.reflect.Method : 代表字节码中的方法字节码,代表类中的方法。
  • java.lang.reflect.Contructor : 代表字节码中的构造方法字节码,代表类中的构造方法。
  • java.lang.reflect.Field : 代表字节码中的属性字节码,代表类中的成员变量。

代码如下(示例):


//java.lang.Class
public class User{
 //Field
 int no;
 
 //Constructor
 public User(){
 }
 
 public User(int no){
  this.no = no;
 }
 
 //Method
 public void setNo(int no){
  this.no = no;
 }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Java反射机制在Spring IOC中的应用详解

本文链接: https://www.lsjlt.com/news/136843.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java反射机制在Spring IOC中的应用详解
    目录Java反射机制在SpringIOC的应用下面是Spring通过配置进行实例化对象Spring的配置如下所示实现一下Spring底层处理原理反射机制、反射机制的作用、反射机制的功...
    99+
    2022-11-12
  • Java中的反射机制详解
    目录一、什么是反射?二、为什么要用反射三、Class类四、获取Class类对象的四种方式五.通过反射构造一个类的实例①使用Class.newInstance②通过反射先获取构造方法再...
    99+
    2022-11-12
  • Java 中的控制反转(IOC)详解
    目录IOC理论推导Spring管理对象Spring管理对象的简单例子Bean无参构造类创建和有参构造类创建Spring的一些配置别名Bean的配置import总结IOC理论推导 ...
    99+
    2022-11-12
  • Java中反射机制和作用详解
    前言 很多刚学Java反射的同学可能对反射技术一头雾水,为什么要学习反射,学习反射有什么作用,不用反射,通过new也能创建用户对象。 那么接下来大师就带你们了解一下反射是什么,为什么...
    99+
    2022-11-12
  • Java中的反射机制示例详解
    目录反射什么是Class类获取Class实例的三种方式通过反射创建类对象通过反射获取类属性、方法、构造器更改访问权限和实例赋值运用场景反射 反射就是把Java类中的各个成分映射成一个...
    99+
    2022-11-13
  • Java 反射机制的实例详解
    Java 反射机制的实例详解前言 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来。那样太low了,今天跟我一起来学习学习一种更加高大上的方式来实现。正文 Java反射机制定义Java反射机制是指在运行状态中...
    99+
    2023-05-31
    java 反射机制 ava
  • Java中的反射机制基本运用详解
    目录Java中的反射机制基本运用1、什么是反射(reflect)2、反射机制提供的功能3、反射->获取类对象4、反射->利用无参构造实例化对象5、反射->利用有参构...
    99+
    2022-11-12
  • java中的反射机制怎么应用
    Java中的反射机制可以应用于以下场景: 动态加载类:可以在运行时加载指定的类,而不是在编译时就确定类的类型。 创建对象:可...
    99+
    2023-10-23
    java
  • 图文详解java反射机制及常用应用场景
    目录一、什么是java反射?二、Hello World三、类加载与反射关系四、操作反射的java类4.1.获取Class对象的三种方法4.2.获取Class类对象的基本信息4.3. ...
    99+
    2022-11-13
  • 详解Java中的反射机制和动态代理
    目录一、反射概述二、反射之Class类2.1、初识Class类2.2、Class有下面的几个特点2.3、获取Class类实例2.4、关于包装类的静态属性2.5、通过Class类的其他...
    99+
    2022-11-12
  • 详解java中反射机制(含数组参数)
    详解java中反射机制(含数组参数)java的反射是我一直非常喜欢的地方,因为有了这个,可以让程序的灵活性大大的增加,同时通用性也提高了很多。反射原理什么的,我就不想做过大介绍了,网上一搜,就一大把。(下面我是只附录介绍下)Reflecti...
    99+
    2023-05-31
    java 反射机制 ava
  • 详解Java编程中的反射在Android开发中的应用
    反射定义 “反射”(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为。 为何需要反射 反射带来的好处包括:     在运...
    99+
    2022-06-06
    java编程 反射 JAVA android开发 Android
  • Golang学习之反射机制的用法详解
    目录介绍TypeOf() ValueOf()获取接口变量信息事先知道原有类型的时候事先不知道原有类型的时候介绍 反射的本质就是在程序运行的时候,获取对象的类型信息和内存结构,反射是把...
    99+
    2022-11-13
  • 如何在Java中利用反射机制查找指定的注解
    如何在Java中利用反射机制查找指定的注解?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。定义注解Controller.java@Target({ElementType.TYPE...
    99+
    2023-05-31
    java ava
  • Java反射机制原理、Class获取方式以及应用场景详解
    目录学习背景一、Java反射机制是什么?1.1 反射原理1.2 反射例子二、Java反射机制中获取Class的三种方式及区别?2.1 Class的几种获取方式2.2 代码演示几种方式...
    99+
    2022-11-13
  • Python中的单例模式与反射机制详解
    目录单例模式反射hasattergetattrsetattr总结 单例模式 一般情况下,类可以生成任意个实例,而单例模式只生成一个实例 我们先用单例模式设计一个Rectangle类 ...
    99+
    2022-11-12
  • java中反射机制的作用是什么
    本篇文章为大家展示了java中反射机制的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式...
    99+
    2023-06-14
  • java中反射机制的作用有哪些
    本篇文章为大家展示了java中反射机制的作用有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象...
    99+
    2023-06-06
  • Golang 中反射的应用实例详解
    目录引言Golang类型设计原则Golang 中为什么要使用反射/什么场景可以(应该)使用反射举例场景:反射的基本用法反射的性能分析与优缺点测试反射结构体初始化测试结构体字段读取/赋...
    99+
    2022-11-11
  • Java中的反射的作用以及详解
    目录 目录 1.反射是什么? 2.反射的优缺点: 3.反射的应用场景: 4.反射创建的三种方式 : 5.反射的常用方法代码示例: 1.实体类(反射获取的类): 2.反射常用方法的示例代码: 1.反射是什么? Java中的反射是指在运行...
    99+
    2023-10-24
    java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作