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

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

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

瀏覽:24日期: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久久,三上悠亚国产精品一区二区三区
日韩国产在线| 美女一区网站| 尤物精品在线| 精品欧美激情在线观看| 久久伦理在线| 女人av一区| 99视频精品| 久久人人精品| 亚洲国产一区二区三区在线播放| 欧美日韩一二三四| 日韩午夜高潮| 亚洲欧美日本国产| 久久国产欧美日韩精品| 麻豆国产精品一区二区三区| 免费亚洲婷婷| 国产精品成人a在线观看| 天堂av在线| 九一国产精品| 亚洲午夜久久| 欧美日韩va| 加勒比视频一区| 亚洲不卡av不卡一区二区| 播放一区二区| 视频一区视频二区中文字幕| 日本伊人久久| 久久一区精品| 99精品美女| 亚洲精品字幕| 欧美国产不卡| 久久在线视频免费观看| 在线一区二区三区视频| 国产精品对白| 91精品一区国产高清在线gif | 丝袜a∨在线一区二区三区不卡| 亚洲日本免费电影| 国产精久久久| 今天的高清视频免费播放成人| 久久香蕉精品| 麻豆精品在线播放| 亚洲天堂黄色| 日韩精品一级| 色综合狠狠操| 中文一区一区三区免费在线观| 国产精品久久亚洲不卡| 欧美精品资源| 日本亚洲视频| 久久影院午夜精品| 不卡av一区二区| 国产日韩欧美在线播放不卡| 欧洲在线一区| 日韩高清中文字幕一区| 97欧美在线视频| 伊人精品久久| 色黄视频在线观看| 日韩一区二区三区精品| 国产精品xx| 亚洲ww精品| 少妇久久久久| 国产精品免费精品自在线观看| 激情欧美国产欧美| 久久99精品久久久野外观看| 激情久久婷婷| 国产欧美丝祙| 亚洲欧美日韩在线观看a三区 | av亚洲免费| 精品日韩一区| 中文字幕一区二区av| 欧美三区四区| 国产精品密蕾丝视频下载| 日韩一区二区免费看| 精品久久美女| 日韩av字幕| 中文亚洲免费| 日韩天堂在线| 国产欧美一区二区三区米奇| 国产精品99一区二区| 久久精品一本| 91欧美日韩在线| 香蕉精品999视频一区二区| 黑人精品一区| 国产欧美日韩精品一区二区免费 | 中文字幕成人| 亚洲福利久久| 成人黄色av| 国产精品久久乐| 久久亚洲不卡| 亚洲国产一区二区在线观看| 最新中文字幕在线播放| 国产午夜一区| 亚洲精品第一| 黄色成人在线网址| 日韩精品午夜| 视频在线不卡免费观看| 国产精品美女在线观看直播| 亚洲精品欧美| 亚洲综合精品| 亚洲成人一区| 99国产精品免费视频观看| 成年男女免费视频网站不卡| 国产精品午夜一区二区三区| 美女黄网久久| 日韩一级欧洲| 国产综合亚洲精品一区二| 在线看片福利| 国产成人a视频高清在线观看| 国产精品亚洲人成在99www| 午夜精品影视国产一区在线麻豆| 国产视频一区欧美| 伊人久久亚洲影院| 欧美福利一区| 欧美日韩国产在线观看网站 | 婷婷亚洲综合| 亚洲高清不卡| 免费污视频在线一区| av中文资源在线资源免费观看| 久久久亚洲欧洲日产| 另类综合日韩欧美亚洲| 国产精久久一区二区| 免费在线亚洲欧美| 美女高潮久久久| 精品精品99| 91综合网人人| 中文字幕在线视频久| 欧美天堂视频| 欧美午夜精彩| 国精品一区二区三区| 午夜久久tv| 久久av在线| 亚洲尤物在线| 蜜臀va亚洲va欧美va天堂| 亚洲毛片视频| 久久国产乱子精品免费女| 国产福利亚洲| 国产一区二区三区网| 在线天堂中文资源最新版| 久久精品国语| 鲁大师影院一区二区三区| 亚洲欧美在线综合| 国产精品免费不| 水蜜桃精品av一区二区| 在线日韩一区| 一区二区国产在线观看| 91精品一区| 国产精品欧美日韩一区| 精品国产亚洲一区二区在线观看| 国产美女高潮在线观看| 欧美二区视频| 日韩精品成人| 激情久久99| 偷拍欧美精品| 日韩一区二区三区精品视频第3页| 国产精品嫩模av在线| 欧美黄色网页| 亚洲伊人影院| 久久精品国产亚洲aⅴ| 精品亚洲美女网站| 国产日韩综合| 国产欧美日韩视频在线| 国产成人精品一区二区三区在线| 久久九九国产| 亚洲aa在线| 精品视频自拍| 99成人在线| 久久狠狠久久| 人人精品亚洲| 婷婷视频一区二区三区| 久久伊人亚洲| 日韩一区二区免费看| 欧美欧美黄在线二区| 亚洲一级少妇| 亚洲不卡视频| 日本美女一区| 日韩欧美三区| 91亚洲国产高清| 日韩在线a电影| 久久久久久亚洲精品美女| 午夜视频精品| 国产精品探花在线观看| 亚洲一级特黄| 国产精品jk白丝蜜臀av小说| 五月天久久网站| 国产极品久久久久久久久波多结野 | 国产精品xvideos88| 精品亚洲美女网站| 综合日韩在线| 不卡一二三区| 日本不卡视频在线观看| 国产综合色区在线观看| 亚洲色图网站| 国产精品三级| 欧美.日韩.国产.一区.二区| 亚洲精品系列| 日韩欧美一区二区三区在线视频 | 国产精品15p| 国产视频一区免费看| 久久精品99国产精品日本| 精品三级久久| 国产九九精品| 免费看日韩精品| 精品亚洲美女网站|