日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

在java中由類名和方法名字符串實現其調用方式

瀏覽:23日期:2022-08-24 08:54:05

js里通過eval()函數,在知道某個方法名是可以實現調用該方法,那么在java里邊又怎么實現的呢?

java里邊是通過反射機制來實現,代碼如下:

import java.lang.reflect.Method; public class Test { public static void main(String[] args) throws Exception { String className = 'com.runqianapp.ngr.alias.example.FunClass'; String methodName = 'sayHello'; Class clz = Class.forName(className); // Object obj = clz.newInstance(); //獲取方法 Method m = obj.getClass().getDeclaredMethod(methodName, String.class); //調用方法 String result = (String) m.invoke(obj, 'aaaaa'); System.out.println(result); }} class FunClass{ public String sayHello(String s){ System.out.println(s); return 'hello!'; }}

補充知識:一個controller調用根據不同業務分發不同service

在一個項目中需要寫很多的controller去調用不同的service,而寫一個網關可以省去寫controller層的痛苦。

下面開始介紹可以分發不同service。

1.因為service在項目啟動時就已全部注入到spring容器中,所以我們需要寫一個工具類,可以從spring上下文(applicationContext)中獲取到對應service

@Componentpublic class SpringUtil implements ApplicationContextAware { @Autowired private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if (SpringUtil.applicationContext == null) { SpringUtil.applicationContext = applicationContext; } System.out.println('========ApplicationContext配置成功,在普通類可以通過調用SpringUtil.getAppContext()獲取applicationContext對象,applicationContext=' + SpringUtil.applicationContext + '========'); } //獲取applicationContext public static ApplicationContext getApplicationContext() { return applicationContext; } //通過name獲取 Bean. public static Object getBean(String name) { return getApplicationContext().getBean(name); } //通過class獲取Bean. public static <T> T getBean(Class<T> clazz) { return getApplicationContext().getBean(clazz); } //通過name,以及Clazz返回指定的Bean public static <T> T getBean(String name, Class<T> clazz) { return getApplicationContext().getBean(name, clazz); }}

2.上面的SpringUtil我們已經可以在上下文中直接取到對于的service了,下面就開始編寫controller進行請求的分發(我稱之為網關)。首先我們需要先寫一個抽象類,來定義service,這樣接下來的sevice只需要繼承這個抽象類即可(我們還可以寫一些時間統計,交易流水入庫等。。自我感覺很大的用處)。

public abstract class RootService { private Logger logger = LoggerFactory.getLogger(RootService.class); private long beforeTime; private long endTime; private void before (String action) { beforeTime = System.currentTimeMillis(); logger.info('交易:' + action + '開始時間:' + beforeTime); } private void end (String action) { endTime = System.currentTimeMillis(); long time = endTime - beforeTime; logger.info('交易:' + action + '結束時間:' + endTime); logger.info('交易:' + action + '耗時:' + time); } public JSONObject execute(String actionName,Map map) { before(actionName); JSONObject jsonObject = doNext(map); end(actionName); return jsonObject; } private JSONObject doNext(Map map) { try { return doAction(map); } catch (Exception e) { e.printStackTrace(); JSONObject js = new JSONObject(); js.put('retCode','000000'); js.put('retMsg','程序報錯'); return js; } } protected abstract JSONObject doAction(Map map); }

3.一切準備就緒,我們可以開始編寫contrconoller了(網關)

@Controller@RequestMapping('/root')public class RootController { @ResponseBody @RequestMapping(value = '/h5.do',produces = {'application/json;charset=UTF-8'},method = RequestMethod.POST) public JSONObject root(@RequestBody Map<String,Object> map, HttpServletRequest httpServletRequest){ String service = (String) map.get('service'); JSONObject js = new JSONObject(); RootService rootService = (RootService) SpringUtil.getBean(service); return rootService.execute(service,map); } }

到這里一個網關就寫好了,然后我們寫一個service進行測試一下(對應的Dao層我就不現丑了,相信大家都會)

@Servicepublic class UserServiceImpl extends RootService{ private Logger logger = LoggerFactory.getLogger(UserService.class); @Autowired private UserDao userDao; @Override protected JSONObject doAction(Map map) { JSONObject js = new JSONObject(); String id = (String) map.get('id'); User user = userDao.getUser(id); js.put('user',user); logger.info('進入了UserService'); return js; }}

下面我們用postman測試一下測試報文為:

{ 'id':'1', 'service':'userServiceImpl'}

控制臺打印為:

2019-10-18 17:24:41.089 INFO 6452 --- [nio-8080-exec-2] c.s.s.service.util.RootService : 交易:userService開始時間:15713906810892019-10-18 17:24:41.138 INFO 6452 --- [nio-8080-exec-2] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2019-10-18 17:24:41.227 INFO 6452 --- [nio-8080-exec-2] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2019-10-18 17:24:41.255 INFO 6452 --- [nio-8080-exec-2] c.s.s.service.impl.UserService : 進入了UserService2019-10-18 17:24:41.256 INFO 6452 --- [nio-8080-exec-2] c.s.s.service.util.RootService : 交易:userService結束時間:15713906812562019-10-18 17:24:41.256 INFO 6452 --- [nio-8080-exec-2] c.s.s.service.util.RootService : 交易:userService耗時:167

返回為:

{ 'user': { 'user_id': '1', 'password': '123456', 'user_name': '張三' }}

總結:這樣寫法的好處在于 1.有一個統一的入口,不需要在編寫controller, 可以專注于業務(service)2.可以在公共入口做公共處理。

以上這篇在java中由類名和方法名字符串實現其調用方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产99久久| 九九综合在线| 国产视频一区免费看| 久久在线免费| 亚洲午夜精品久久久久久app| 成人美女视频| 97se综合| 亚洲网站视频| 夜夜嗨网站十八久久 | 91亚洲精品在看在线观看高清| 日韩精品一二三四| 亚洲精品看片| 丝瓜av网站精品一区二区| 视频一区二区三区中文字幕| 蜜桃视频一区二区| 青草国产精品| 久久精品国产亚洲aⅴ| 精品一区视频| 国产美女高潮在线| 国产91一区| 免费观看在线综合色| 视频一区日韩精品| 美腿丝袜亚洲一区| se01亚洲视频 | 国产精品精品国产一区二区| 精品久久久久中文字幕小说| 午夜精品成人av| 黄色成人91| 亚洲免费成人av在线| 国产欧美久久一区二区三区| 国产成人精品免费视| 欧美a级一区| 亚洲欧洲av| 精品视频高潮| 不卡在线一区| 日本欧美一区| 久久一区欧美| 中文字幕在线看片| 久久av一区| 国产精品男女| 欧美激情国产在线| 亚洲作爱视频| 国产精品蜜月aⅴ在线| 亚洲www免费| 午夜精品影视国产一区在线麻豆| 欧美a一区二区| 亚洲成av人片一区二区密柚| 亚洲人妖在线| 福利一区二区三区视频在线观看| 欧美日韩国产高清电影| 日韩不卡在线观看日韩不卡视频| 国产伦一区二区三区| 四虎4545www国产精品| 免费黄网站欧美| 日韩成人精品一区二区| 香蕉成人久久| 麻豆91在线播放| 亚洲资源av| 精品一区视频| 蜜臀久久99精品久久久久久9| 免费在线亚洲欧美| 中文日韩欧美| 国产+成+人+亚洲欧洲在线| 亚洲综合三区| 97人人精品| 日韩精品欧美成人高清一区二区| 麻豆成人在线观看| 亚洲综合不卡| 国产传媒在线观看| 亚洲人成高清| 日韩欧美一区免费| 欧美一区二区三区免费看| 久久要要av| 欧美成人精品一级| 亚洲精品影视| 九色porny丨国产首页在线| 日本视频一区二区| 欧美日韩国产传媒| bbw在线视频| 日本电影久久久| 午夜欧美精品| 久久精品国产99国产| 日韩精品一区二区三区免费视频| 日韩毛片在线| 精品三区视频| 国产日韩欧美一区在线| 国产一区91| 国产亚洲一区二区手机在线观看 | 夜夜精品视频| 精品国产欧美日韩| 日韩欧美2区| 99国产精品免费视频观看| 国产精品mm| 日韩在线观看中文字幕| 久久亚洲精品中文字幕蜜潮电影| 久久一区欧美| 国产精品1区| 日本麻豆一区二区三区视频| 亚洲主播在线| 国产精品日本欧美一区二区三区| 电影天堂国产精品| а√在线中文在线新版| 麻豆精品av| 国产精品免费99久久久| 日本精品国产| 亚洲欧洲专区| 亚洲一区成人| 激情偷拍久久| 亚洲va在线| 亚洲成av在线| 久久精品女人| 国产精品66| 国产精品videossex久久发布| 日韩一区二区三免费高清在线观看| 日韩精品欧美激情一区二区| 国产不卡精品| 精品国产一区二区三区噜噜噜| 国产伦精品一区二区三区在线播放| 亚洲精品黄色| 日韩精品三级| 欧美一区成人| 国产精品嫩模av在线| 国产精品毛片视频| 国产精品一级| 欧美激情91| 国产午夜精品一区在线观看| 日韩精品福利一区二区三区| 亚洲涩涩av| 婷婷综合国产| 日韩av网站免费在线| 91亚洲精品视频在线观看| 欧美日韩亚洲一区在线观看| 日本欧美大码aⅴ在线播放| 欧美一区网站| 国产精品一区毛片| 国产精品成人国产| 老司机精品在线| 国产成人免费| 成人三级高清视频在线看| 日韩欧美综合| 最新日韩av| 欧美日韩国产一区二区三区不卡 | 日韩精品一区二区三区中文字幕| 亚洲一区二区三区中文字幕在线观看 | 亚洲成a人片| 激情综合自拍| 在线一区欧美| 亚洲aa在线| 蜜桃av一区二区| 亚洲aa在线| 国产精品丝袜在线播放| 精品国产欧美| 国产一区日韩一区| 爽好久久久欧美精品| 欧美影院精品| 国产精品二区不卡| 亚洲高清二区| 亚洲永久精品唐人导航网址| 国产精品亚洲欧美日韩一区在线| 久久狠狠久久| 国产h片在线观看| 红桃视频国产精品| 欧美一区不卡| 成人一区而且| 伊人影院久久| 国产午夜久久av| 日本韩国欧美超级黄在线观看| 一本一本久久| 国产美女久久| 久久久国产亚洲精品| 日韩中文字幕亚洲一区二区va在线| 日韩高清成人在线| 中文字幕在线官网| 亚洲精品乱码| 黄色网一区二区| 影院欧美亚洲| 日韩精品一页| 精品99久久| 99日韩精品| 你懂的国产精品| 国产精品日本欧美一区二区三区| 国产精品久久久久久久久久白浆| 久久视频国产| 国产色噜噜噜91在线精品| 亚洲不卡av不卡一区二区| 日韩高清欧美激情| 色婷婷久久久| 国产美女视频一区二区| 久久九九电影| 日韩1区2区日韩1区2区| 91精品国产成人观看| 日本强好片久久久久久aaa| 视频福利一区| 欧美在线黄色| 欧美片第1页| 日韩欧美激情| 国产尤物精品| 精品国产亚洲一区二区三区大结局| 亚洲综合不卡| 日本精品不卡|