java中由类名和方法名字符串如何实现其调用方式

  

java中由类名和方法名字符串如何实现其调用方式?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

js里通过eval()函数,在知道某个方法名是可以实现调用该方法,那么在java里边又怎么实现的呢?

<强> java里边是通过反射机制来实现,代码如下:

进口java.lang.reflect.Method;
  
  公共类测试{
  公共静态void main (String [] args){抛出异常
  字符串className=癱om.runqianapp.ngr.alias.example.FunClass";
  字符串methodName=皊ayHello";
  类clz=forname(名称);//对象obj=clz.newInstance ();//获取方法
  m=obj.getClass()方法。getDeclaredMethod (methodName String.class);//调用方法
  字符串的结果=(字符串)。调用(obj,“aaaaa");
  System.out.println(结果);
  }
  }
  
  类FunClass {
  公共字符串sayHello (String s) {
  System.out.println(年代);
  返回“你好!“
  }
  }

<>强一个控制器调用根据不同业务分发不同服务

在一个项目中需要写很多的控制器去调用不同的服务,而写一个网关可以省去写控制器层的痛苦。

下面开始介绍可以分发不同服务。

1。因为服务在项目启动时就已全部注入到春容器中,所以我们需要写一个工具类,可以从弹簧上下文(applicationContext)中获取到对服务应

@ component   公共类SpringUtil实现ApplicationContextAware {      @ autowired   私有静态ApplicationContext ApplicationContext;      @Override   公共空间setApplicationContext (ApplicationContext ApplicationContext)抛出BeansException {   如果(SpringUtil。applicationContext==null) {   SpringUtil。applicationContext=applicationContext;   }   System.out.println (“========ApplicationContext配置成功,在普通类可以通过调用SpringUtil.getAppContext()获取ApplicationContext对象,ApplicationContext=?+ SpringUtil。applicationContext +“========?;   }//获取applicationContext   公共静态ApplicationContext getApplicationContext () {   返回applicationContext;   }//通过名字获取Bean。   公共静态对象getBean(字符串名称){   返回getApplicationContext () .getBean(名称);   }//通过类获取Bean。   公共静态& lt; T>T getBean (Classclazz) {   返回getApplicationContext () .getBean (clazz);   }//通过名字,以及Clazz返回指定的Bean   公共静态& lt; T>T getBean(字符串名称,Classclazz) {   返回getApplicationContext ()。getBean(名称、clazz);   }   }

2。上面的SpringUtil我们已经可以在上下文中直接取到对于的服务了,下面就开始编写控制器进行请求的分发(我称之为网关)。首先我们需要先写一个抽象类,来定义服务,这样接下来的服务只需要继承这个抽象类即可(我们还可以写一些时间统计,交易流水入库等,自我感觉很大的用处)。

 

3。一切准备就绪,我们可以开始编写contrconoller了(网关)

@ controller   @RequestMapping (“/root")   公开课RootController {      @ResponseBody   @RequestMapping (value=https://www.yisu.com/zixun/"/h6.do”,产生={}“application/json; charset=utf - 8”,方法=RequestMethod.POST)   公共JSONObject根(@RequestBody <字符串、对象>地图,地图HttpServletRequest HttpServletRequest) {   服务=字符串(字符串)map.get(“服务”);      JSONObject js=new JSONObject ();   RootService RootService=(RootService) SpringUtil.getBean(服务);      返回rootService.execute(服务、地图);   }   }

java中由类名和方法名字符串如何实现其调用方式