pring 动态代理-Quartz怎么能不实现job接口而自己指定要执行的方法(就像sping中的那样)

问题描述

Quartz怎么能不实现job接口而自己指定要执行的方法(就像sping中的那样)

如题

这次代码中没用到spring 因此以前在spring中用下列方式实现
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

run

的如今不能用了 怎么才能简单的做使得quartz直接调用自己指定的方法而不是
必须要继承Job实现execute()方法

解决方案

写一个代理类,包装下,在它的execute里面由它读取配置文件反射创建对象

解决方案二:

用动态代理出错了

ErrorLogger - An error occured instantiating job to be executed. job= 'default.aa'
org.quartz.SchedulerException: Job instantiation failed
at org.springframework.scheduling.quartz.AdaptableJobFactory.newJob(AdaptableJobFactory.java:59) ~[spring-context-support-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.quartz.core.JobRunShell.initialize(JobRunShell.java:132) ~[quartz-1.6.1.jar:1.6.1]
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:386) [quartz-1.6.1.jar:1.6.1]
Caused by: java.lang.InstantiationException: com.sun.proxy.$Proxy28
at java.lang.Class.newInstance(Class.java:359) ~[na:1.7.0_51]
at org.springframework.scheduling.quartz.AdaptableJobFactory.createJobInstance(AdaptableJobFactory.java:77) ~[spring-context-support-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.springframework.scheduling.quartz.AdaptableJobFactory.newJob(AdaptableJobFactory.java:55) ~[spring-context-support-3.1.3.RELEASE.jar:3.1.3.RELEASE]
... 2 common frames omitted

我的实现

Job batchJob = new BatchJob();
    Job jobProxy = (Job) Proxy.newProxyInstance(batchJob.getClass().getClassLoader(),
            batchJob.getClass().getInterfaces(),
            new JobDetailInvocationHandler());

     JobDetail jobDetail = new JobDetail();
    jobDetail.setJobClass(jobProxy.getClass());
    jobDetail.setName(triggerPO.getTriggerName());
    jobDetail.setGroup(triggerPO.getTriggerGroupName());
    jobDetail.setDescription(triggerPO.getDescription());
    return jobDetail;
时间: 2024-09-30 14:46:11

pring 动态代理-Quartz怎么能不实现job接口而自己指定要执行的方法(就像sping中的那样)的相关文章

JDK动态代理简介

动态代理 代理模式是 Java 中的常用设计模式,代理类通过调用被代理类的相关方法,提供预处理.过滤.事后处理等服务,动态代理及通过反射机制动态实现代理机制.JDK 中的 java.lang.reflect.Proxy 类可以用来实现动态代理. 首先,准备一个简单的接口和实现类 /** * 接口 IHello.java */ public interface IHello { void hello(); } /** * 实现类 Hello.java */ public class Hello i

JDK和CGLIB生成动态代理类的区别

 关于动态代理和静态代理 当一个对象(客户端)不能或者不想直接引用另一个对象(目标对象),这时可以应用代理模式在这两者之间构建一个桥梁--代理对象. 按照代理对象的创建时期不同,可以分为两种: 静态代理:事先写好代理对象类,在程序发布前就已经存在了: 动态代理:应用程序发布后,通过动态创建代理对象. 静态代理其实就是一个典型的代理模式实现,在代理类中包装一个被代理对象,然后影响被代理对象的行为,比较简单,代码就不放了. 其中动态代理又可分为:JDK动态代理和CGLIB代理. 1.JDK动态代理

spring入门(13) JDK动态代理

首先我们来了解一下java中的代理模式,代理模式的英文叫做Proxy或Surrogate,中文都可译为"代理",所谓代理,就 是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象 ,而代理对象可以在客户端和目标对象之间起到中介的作用. 1.抽象主题角色 声明了真实主题和代理主题 的共同接口,这样一来在任何可以使用真实主题的地方都可以是使用代理主题 2.代理主题(Proxy)角色: 代理主题角色内部含有对真实主题的引用,从而可以在任

【SSH系列】静态代理&&动态代理

从设计模式说起 代理模式是二十三中设计模式中的一种,代理模式就是指由一个代理主题来操作真实的主题,真实的主题执行具体的业务操作,而代理主题负责其她相关业务,简而言之,代理模式可以由以下三个部分组成: a.抽象角色:通过接口或抽象类声明真实角色实现的业务方法. b.代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作. c.真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用.第一次接触代理模式的是在学习大话设计模式的时候,首先

动态代理解释-JDK,CGLIB,JAVASSIST,ASM

动态代理是指在运行时,动态生成代理类.代理类的字节码将在运行时生成并载入当前的ClassLoader.          生成动态代理类的方法很多,如JDK自带的动态代理.CGLIB.Javassist或者ASM库.           JDK动态代理使用简单,它内置在JDK中,因此不需要引入第三方Jar包,但相对功能比较弱.CGLIB和Javassist都是高级的字节码生成库,总体性能比JDK自带的动态代理好,而且功能十分强大.ASM是低级的字节码生成工具,使用ASM已经近乎在于使用Javab

java动态代理实现Proxy和InvocationHandler cglib

概念: 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了. 动态代理:在程序运行时,运用反射机制动态创建而成. JDK的动态代理用起来非常简单,当它有一个限制,就是使用动态代理的对象必须实现一个或多个接口.如果想代理没有实现接口的继承的类,该怎么办?现在我们可以使用CGLIB包. JDK动态代理实现 import java.lang.reflect.Constructor; import java.lang.reflect.Invoc

Windows资源浏览器——动态代理(java)

      写这篇博客是为了解决<Dota兄订餐--静态代理(java)> 里最终的遗留问题.       想必大家都或多或少了解一些Dos命令,在调用外部程序时,经常会用到dos命令来完成.其中有一条万能的命令,就是用Explorer.exe来打开任意程序,就相当于直接双击该程序.        先给大家看一下我们要调用的外部资源,放到一个文件夹中,包括图片.音乐.视频.文本文档.word文档.还有其他文档,最后还会加上一个网址.        我把Dos命令写入到一个bat中,也放入同一个

跟屌丝大哥学习设计模式---代理模式之动态代理

动态代理 java中动态代理机制的引入使得代理模式的思想更加完善与进步,它允许动态的创建代理并支持对动态的对所代理的方法进行调用.Java动态代理类位于Java.lang.reflect包下,一般主要涉及到以下两个类:  (1). Interface InvocationHandler:该接口中仅定义了一个方法Object:invoke(Object obj,Method method, Object[] args).在实际使用时,第一个参数obj一般是指代理类,method是被代理的方法,如上

从狡猾的房产中介来看动态代理

探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)- 核心基础 Android多分辨率适配框架(2)- 原理剖析 Android多分辨率适配框架(3)- 使用指南 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View