Java反射可以调用spring bean吗
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:36
Java反射可以调用spring bean吗
- 2024-11-10
目录 使用情景 目的 实现方式 前提: 思路 核心类 测试方法 源码分享 使用情景 将定时任务录入数据库(这样做的好处是定时任务可视化,也可以动态修改各个任务的执行时间),通过反射执行对应的方法: 配合Netty实现简单的HTTP请求处理框架 其他需要使用反射执行Spring方法的业务亦可 目的 很多文章都提到了反射,但是对于方法参数处理这一块都是明确了类型,不支持按照实际参数动态转换,而本篇文章提供了一个思路怎么做到方法参数的动态调用. 大家也可以通过利用本文的方法结合
比如:在我的project中有一个类CompassIndexOperation,以: @Service("CompassIndexOperation") @Transactional 方式通知Spring创建一个实现类的实例: 且Spring配置xml文件里设置了生成bean的文件文件夹,我的project实例为: <context:component-scan base-package="com.ourfuture.compass.*"/> 这样.pr
本文知识点(目录): 1.创建细节 1) 对象创建: 单例/多例 2) 什么时候创建? 3)是否延迟创建(懒加载) 4) 创建对象之后,初始化/销毁 2.创建方式 2.1.默认无参构造器 2.2.带参构造器(有两种方式,第一种:一个实体类:第二种:两个实体类合为一个[嵌套]) 2.3.工厂类创建对象(两种:一个是工厂实体类,另一个是工厂实体类内部的静态方法) 3.附
下面是一个比较简单的通过JAVA的反射机制调用已知方法的例子 package com.togeek.mvntest; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author togeek 利用反射调用方法 * @address http://www.cnblogs.com/togeek/ * @Date: 2015年11月29日18:01:31 */ pu
在使用Java 反射时,对方法的调用,可能碰到最多的问题是,方法的变量如何使用.其实,调用方法的变量全部在参数数组里,不管有多少个参数,你都要把它放在参数数组里,如果是单个非数组参数,则可不使用参数数组. 如一个类中main方法的参数为String[] args,则在Java reflect中调用时,需要放在new Object[]{}中. /** * 调用非当前路径下的类 */ public void classLoadTest2(){ try { URL[] urls = new URL[]
模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体类,又要过滤掉password这个属性.那么我们可以另外创建一个实体类,不包含password属性.然后我们将查到的用户信息,赋值给新创建的对象即可. 赋值这一步是比较繁琐的,我们需要写循环,然后判断,然后赋值.等将来需要导出管理员信息的时候我们又要写循环,然后判断,然后赋值... 怎么能写一个共用
项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常大,并且不够灵活,一旦前台页面需要调整字段顺序或者增加一个字段.删除一个字段时,后台需要修改java代码.经过一上午的重构努力,改为数据库配置字段与字段对应方法,java利用反射动态调用对象方法从而获取字段值,拼接为list传递给前台.这样修改后,代码干净整洁,非常灵活,只要是对象中存在的方法,可以在数据库中任意配置显示与
反射的定义: 反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作.例如它允许一个java的类获取它所有的成员变量和方法并且显示出来. 反射机制的优点与缺点 首先要搞清楚为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念. 静态编译:在编译时确定类型,绑定对象,即通过. 动态编译:运行时确定类型,绑定对象.动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性. 反射机制的优点:可以实现动态创
1. 反射调用默认访问权限的内部类 package com.blueStarWei.invoke; import java.lang.reflect.Method; import com.blueStarWei.invoke.OuterClass.InnerClass; class OuterClass { public void func(){ System.out.println("Outer Class."); } class InnerClass { private Strin
由于项目的实际需要,所以利用java反射原理写了一个简单给bean赋值和取值通用的类,在此记录下方便自己日后用到,也为需要的兄弟提供个参考例子. 工具类BeanRefUtil: package com.test; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.Date; impo
单例类: package singleton; public class SingletonTest { // 私有构造方法 private SingletonTest(){ System.out.println("无参数---构造----"); } // 私有构造方法 private SingletonTest(String a){ System.out.println("有参数---构造----参数值:" + a); } //定义私有类型的变量 private
1. 反射原理 a).运行时通过 Class c = Class.forName("com.hua.xx.DynTest")加载类文件 b).通过 DynTest t = c.newInstance()生成实例 c).通过 class.getMethod方法获取对应的method d).method.invoke(t, args)调用方法 public class ReflectTest { public void sayHello( String ss ){ System.out.p
1.获取目标类: 每个类都有一个class属性,通过实体类的class属性获取: Class clazz = Person.class 通过对象获取. Person p1 = new Person("sqc") Class clazz = p1.getClass() Class clazz = Class.forName("org.mooctest.Person") 2.获取目标方法并执行 Method method = clazz.getDeclaredMeth
IOC(Inverse of Control) 可翻译为“控制反转”,但大多数人都习惯将它称为“依赖注入”.在Spring中,通过IOC可以将实现类.参数信息等配置在其对应的配置文件中,那么当 需要更改实现类或参数信息时,只需要修改配置文件即可,这种方法在上例的基础上更进一步的降低了类与类之间的耦合.我们还可以对某对象所需要的其它对象进 行注入,这种注入都是在配置文件中做的,Spring的IOC的实现原理利用的就是Java的反射机制, Spring还充当了工厂的角色,我们不需要自己建立工厂类.S
我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用spring提供的其他对象或者说有一些不需要交给spring管理,但是需要用到spring里的一些对象.如果这是spring框架的独立应用程序,我们通过 ApplicationContext ac = new FileSystemXmlApplicationContext("applicationC
单例类: package singleton; public class SingletonTest { // 私有构造方法 private SingletonTest(){ System.out.println("无参数---构造----"); } // 私有构造方法 private SingletonTest(String a){ System.out.println("有参数---构造----参数值:" + a); } //定义私有类型的变量 private
package net.xsoftlab.baike; import java.lang.reflect.Method; public class TestReflect { public static void main(String[] args) throws Exception { Class<?> clazz = Class.forName("net.xsoftlab.baike.TestReflect"); // 调用Te
要详细的了解Java反射,就得要了解Java的类加载以及何为运行时动态加载等等概念.本文抛开其余概念,简单介绍Java反射,详细介绍会在以后有一个系统而全面的认识过后展开. 反射是Java被视为动态语言的关键,它允许程序在运行时取得任何类的内部信息.Java的这个能力或许在Web应用中用得不是很多,但在一些Java组件开发过程中非常常见,比如Spring.Hibernate等都以此为基础.了解并熟知Java反射机制对我们了解Java框架有很大的帮助. 我们首先写好一个Test类,并将它编译为cl
问题背景:从本地调用服务器的dubbo接口进行测试 实现思路:基于IDEA+Spring+maven+Dubbo搭建测试项目,从本地直接调用 具体实现思路可参考博客:https://www.cnblogs.com/xiuxingzhe/p/9250737.html 碰到问题:引入测试目标jar后,调用其接口运行测试类时,报错如下 Caused by: java.lang.IllegalStateException: Duplicate spring bean id cfgDistributo
有篇文章对java反射的调用的效率做了测试,写的比较好.猛击下面地址 http://www.blogjava.net/stone2083/archive/2010/09/15/332065.html 上面的地址中有cglib的使用,关于cglib的其他的使用和原理参考下面几篇文章 使用cglib动态创建java类 CGLIB学习笔记 http://wsmajunfeng.iteye.com/blog/1790143 关于java字节码框架ASM的学习 Java字节码操纵框架ASM小试 Java动
本文来自:blog.csdn.net/ljphhj JAVA反射机制: 通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运行的时候还可以动态地去操作他们. 理论的东东太多也没用,下面我们看看实践 Demo - Demo: package cn.lee.demo; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ja
热门专题
- 上一篇: java返回音频文件流给前端 没有总时长
- 下一篇: java发送xml报文实例






