public class BaseController {
/**
* 通过指定的bean处理业务,非核心流程,不能支持java 动态代理对象@transactional注解的类
* @param bean
* @throws Throwable
*/
@SuppressWarnings("unchecked")
protected void process(BeanBase bean) throws Throwable {
bean.setDatas(Util.converToBean(bean));
String processorName = bean.getNeedcontrolprocess();
if(processorName == null || processorName == ""){
return;
}
String[] beanAndMethod = processorName.split("\\.");
String beanName = beanAndMethod[0];
//Service层里的方法名
String methodName = "process";
if(beanAndMethod.length > 1){
methodName = beanAndMethod[1];
}
//spring 反射获得Service层的服务类beanName=taxFavInfo(@Service("taxFavInfo"))
Object processBean = ApplicationContextHepler
.getBeanByName(beanName);
if (processBean == null) {
throw new ServiceException("数据格式非法,没有找到相应的流程!");
}
bean.setDatas(Util.converToBean(bean));
//获得运行时Class实例
@SuppressWarnings("rawtypes")
Class clazz = processBean.getClass();
@SuppressWarnings("rawtypes")
Class cz[] = new Class[1];
cz[0] = BeanBase.class;
Method method = null;
try {
//Service层里的methodName(BeanBase bean)参数是BeanBase类型。
method = clazz.getDeclaredMethod(methodName,cz);
//反射机制调用方法 参数1:service里的全路径,参数2:methodName方法的参数
method.invoke(processBean,bean);
bean.setContent(Util.converToStr(bean));
} catch (NoSuchMethodException e) {
throw new ServiceException("没找到相应的处理方法!");
} catch (SecurityException e) {
throw new ServiceException("安全检查不通过!");
} catch (IllegalAccessException e) {
throw new ServiceException("非法访问!");
} catch (IllegalArgumentException e) {
throw new ServiceException("参数不合法!");
} catch (InvocationTargetException e) {
if(e.getTargetException() != null){
if(e.getTargetException() instanceof ServiceException){
throw (ServiceException)e.getTargetException();
}else{
throw e.getTargetException();
}
}else{
throw new ServiceException("调用失败"+e.getMessage());
}
}
}
/**
* 获取创建者工号字符串
* 方法说明:<br>
*
* @return
*/
protected String getCreateId() {
return "|createId:"+UserUtil.getCurrentUser().getEmpCode();
}
}
分享到:
相关推荐
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
描述JAVA反射机制应用、举例。描述反射机制的具体实现及方法实现。
java反射机制应用,文档中列举了使用java反射机制的各个应用场景,加以代码实例,使用学习非常方便。
JAVA反射机制及应用例子.。。Reflection API
java反射机制详解与应用
Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源...
Java反射机制经典案例
关于java反射机制的很好的讲解,包括Java的反射机制(Reflection)、Class类、如何获得类的相关信息和运用,并且还有相应的练习,有助于更好地学习java反射机制
Java反射机制是一个非常强大的功能,在很多大型项目比如Spring, Mybatis都可以看见反射的身影。通过反射机制我们可以在运行期间获取对象的类型信息,利用这一特性我们可以实现工厂模式和代理模式等设计模式,...
Java反射机制在数据持久层轻量级ORM框架中的应用研究.pdf
常见的应用如下 逆向代码 ,例如反编译 与注解相结合的框架 例如Retrofit 单纯的反射机制应用框架 例如EventBus 2.x 动态生成类框架 例如Gson Java高级程序设计实战教程第三章-Java反射机制全文共15页,当前为第8页...
java的反射机制的应用实例,对反射的机制很好的理解!
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。...
java反射机制详解与应用.pdf
对java泛型以及反射机制进行原理和应用上的讲解,帮助初学者对这两个概念进行更轻松的掌握
java反射机制的原理及在Android下的简单应用
应用java反射机制打印一个对象.docx
JAVA反射机制与类的加载,详细的说明java反射机制的实例以及应用是入门级的课件
Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件 之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内 部信息,而不是...
反射实例-JAVA反射机制,基本知识介绍和简单的应用