如何開發一個java開源架構-----Jvn架構之實現自動產生線上文檔(第七講)

來源:互聯網
上載者:User

標籤:

一 、

前言:博主正在教大家如何開發一個javaEE架構,我把架構命名為Jvn,部落格裡有完整的開發視頻,每一篇博文都是一個知識點;

關於架構的介紹和學習,可以從我部落格第一講開始看起,部落格首頁:http://www.cnblogs.com/everxs/

本次內容視頻以及源碼:http://pan.baidu.com/s/1o6MJnFc

 

二、

本次部落格講的內容

情境:現在是APP時代,APP很熱門,而且跟後台互動跑的都是HTTP協議,所以講到這裡,對於這裡面的互動。

安卓工程師(用戶端),在調用後台介面的時候,需要一個文檔,二後台工程師(這裡用JAVA),要去維護這份文檔,或者

說手寫這份文檔,工作量跟維護量是非常大的。所以提出了一個想法,線上文檔能否自動產生了。

解決思路:

1,在我們的Controller上面加一個註解@OnlineController同時指定被註解Controller的用途  memo="使用者管理控制器",該COntroller的URL

2,在我們具體的Action,也就是我們Controller裡面的方法裡面加一個@OnlineMethod註解,同時指定 method="訪問方式(GET或者POST)",memo="方法描述",

    param="調用該介面需要的參數比如:name=XXX&age=XXX",該介面的URL

3,把這些資訊儲存進我們的List裡面,啟動架構的時候設進一個List.

4,使用者可以定義一個Controller擷取該list在頁面顯示出來

本次視頻跟源碼的:http://pan.baidu.com/s/1o6MJnFc

建議看視頻,因為我在視頻裡講得很詳細。

Ps:視頻跟代碼都會持續更新,希望大家喜歡,多多支援。 

    QQ:245223343  永遠的八哥

下面是一些代碼:

OnlineController:

/**| * 線上文檔Controller註解 * @author Administrator * */@Retention(RetentionPolicy.RUNTIME)public @interface OnlineController {String memo();}

OnlineMethod:

/** * 線上文檔的方法註解 * @author Administrator * */@Retention(RetentionPolicy.RUNTIME)public @interface OnlineMethod {String memo();String param();String method();}

Online實體類:

public class Online {private String url;private String memo;private String method;private String param;private int type;public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getMemo() {return memo;}public void setMemo(String memo) {this.memo = memo;}public String getMethod() {return method;}public void setMethod(String method) {this.method = method;}public String getParam() {return param;}public void setParam(String param) {this.param = param;}public int getType() {return type;}public void setType(int type) {this.type = type;}}

OnlineDoc 操作類:

public class OnlineDoc {/** * 載入有註解的Controller */public static List<Online> loadClass(Map<String,Class> map){List<Online> onlineList = new ArrayList<Online>();System.out.println("map :"+map.size());for(String nameSpace :map.keySet()){Class clazz = map.get(nameSpace);OnlineController onlineController = (OnlineController) clazz.getAnnotation(OnlineController.class);if(onlineController!=null){System.out.println("進來");Online online = new Online();online.setType(1);online.setMemo(onlineController.memo());online.setUrl(nameSpace);onlineList.add(online);Method[] methods = clazz.getMethods();for(Method method :methods){OnlineMethod onlineMethod = method.getAnnotation(OnlineMethod.class);if(onlineMethod!=null){Online o = new Online();o.setMemo(onlineMethod.memo());o.setMethod(onlineMethod.method());o.setParam(onlineMethod.param());o.setType(2);o.setUrl(nameSpace+"/"+method.getName());onlineList.add(o);}}}}System.out.println("執行完 有多少個:"+onlineList.size());return onlineList;}}

最後是配置線上文檔:

public class OnlineDocController extends JvnController{public void index(){List<Online> onlineList = JvnConfig.CONSTANT.getOnlineList();System.out.println("size :" +onlineList.size());getRequest().setAttribute("onlineList", onlineList);render("/WEB-INF/views/online/index.jsp");}}

測試Controller:

@OnlineController(memo = "訂單管理控制器")public class OrderController extends JvnController{@OnlineMethod(memo = "增加訂單", method = "GET", param = "訂單id   orderId")public void add(){}@OnlineMethod(memo = "刪除訂單", method = "GET", param = "訂單id   orderId")public void delete(){}}

線上文檔的jsp:

<%@page import="com.jvn.doc.online.Online"%><%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html ><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><!-- 新 Bootstrap 核心 CSS 檔案 --><link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css"><!-- jQuery檔案。務必在bootstrap.min.js 之前引入 --><script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script><!-- 最新的 Bootstrap 核心 JavaScript 檔案 --><script src="http://cdn.bootcss.com/bootstrap/3.3.4/js/bootstrap.min.js"></script></head><body><h1>線上產生文檔</h1><div style="width: 70%;margin: 0,auto;"><table class="table">  <tr><th>訪問的url</th><th>描述</th><th>參數/說明</th><th>訪問方式</th></tr>     <c:forEach var="online" items="${onlineList}">   <tr>  <td>http://www.baidu.com/jvn${online.url}</td>  <td>${online.memo}</td>  <td>${online.param}</td>  <td>${online.method}</td>  </c:forEach>  </tr></table></div></body></html>

  

如何開發一個java開源架構-----Jvn架構之實現自動產生線上文檔(第七講)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.