1. 程式人生 > >新人求助,非maven,非springboot專案使用swagger2

新人求助,非maven,非springboot專案使用swagger2

上個禮拜老大分配任務給我,公司專案需要生成介面文件,在網上找了許多文章,嘗試過各種辦法依舊無法讀取

先上圖:

這是SwaggerConfig.java的內容:

package com.fh.swagger;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableWebMvc 
@EnableSwagger2 
public class SwaggerConfig extends WebMvcConfigurerAdapter{
	@Bean
	public Docket customDocket(){
		return new Docket(DocumentationType.SWAGGER_2)
		.groupName("business-api")
		.genericModelSubstitutes(DeferredResult.class)
		.forCodeGeneration(false)
		.select()// 選擇哪些路徑和API會生成document
		.apis(RequestHandlerSelectors.basePackage("com.fh.controller.antd.appBackgroundManagement.AntdSysNewsController"))// 對所有api進行監控
		.paths(PathSelectors.any())// 對所有路徑進行監控
		.build();
	}
}

這是我讓SwaggerConfig.java掃描的controller(為了測試我把程式碼都註釋了,就留一個@Api註解在class上面): 

package com.fh.controller.antd.appBackgroundManagement;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.fh.entity.nrb.ResponseBean;
import com.fh.entity.nrb.SysNews;
import com.fh.entity.nrb.itemImg;
import com.fh.mapper.nrb.SysNewsMapper;
import com.fh.oss.TestOSS;
import com.fh.service.nrb.NewsService;
import com.fh.service.nrb.SysNewsService;
import com.fh.util.JWT;
import com.fh.util.PageData;
import com.fh.util.nrb.KeyCreatorUtil;

@Controller
@RequestMapping("/appAntdSysNews")
@Api(value="訊息通知",tags="訊息通知模組介面Api")
public class AntdSysNewsController {
}

這是靜態資源目錄:

這是新增的jar包 (不包括專案原先的):

全部是全部是看網上的文章,然後在maven中央倉庫上面下載的,那些文章都不提供jar包,官網的swagger UI也不知道有沒有下對,我用的版本有:一個swagger-ui-master版本的,還有一個swagger-ui-2.x,其他的要不是swagger1的,要不是3.0的我都不知道下哪個
com.fasterxml.classmate.classmate-1.3.3.jar
com.fasterxml.jackson.annotation.jackson-annotations-2.5.0.jar
com.fasterxml.jackson.core.jackson-core-2.5.0.jar


com.fasterxml.jackson.databind.jackson-databind-2.5.0.jar
org.codehaus.jackson.jackson-core-asl-1.9.13.jar
org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar
org.springframework.plugin.core.spring-plugin-core-1.2.0.RELEASE.jar
org.springframework.plugin.metadata.spring-plugin-metadata-1.2.0.RELEASE.jar
springfox.documentation.springfox-core-2.7.0.jar
springfox.documentation.schema.springfox-schema-2.7.0.jar
springfox.documentation.springfox-spi-2.7.0.jar
springfox.documentation.spring.web.springfox-spring-web-2.7.0.jar
springfox.documentation.swagger.springfox-swagger-common-2.7.0.jar
springfox-swagger-ui-2.7.0.jar裡面是/META-INF/resources/webjars/springfox-swagger-ui/swagger-ui.html...
我把resorces解壓出來放到專案的META-INF裡面了
springfox.documentation.swagger2.springfox-swagger2-2.7.0.jar
io.swagger.annotations.swagger-annotations-1.5.13.jar
io.swagger.models.swagger-models-1.5.13.jar
com.mangofactory.swagger.swagger-springmvc-0.9.5.jar//這個似乎沒用,但我還是加上了
io.swagger.swagger-core-1.5.13.jar

這是ApplicationContext.xml配置的攔截器內容(<property name="filterChainDefinitions">裡面有好一大段都是看教程加的):

<!-- 啟動元件掃描,排除@Controller元件,該元件由SpringMVC配置檔案掃描 -->
    <context:component-scan base-package="com.fh">
        <context:exclude-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
                <context:exclude-filter type="annotation"
            expression="org.springframework.web.bind.annotation.ControllerAdvice" />
    </context:component-scan>

<!-- ================ Shiro start ================ -->
        <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
            <property name="realm" ref="ShiroRealm" />
        </bean>
        
        <!-- 專案自定義的Realm -->
        <bean id="ShiroRealm" class="com.fh.interceptor.shiro.ShiroRealm" ></bean>
        
        <!-- Shiro Filter -->
        <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
            <property name="securityManager" ref="securityManager" />
            <property name="loginUrl" value="/" />
            <property name="successUrl" value="/main/index" />
            <property name="unauthorizedUrl" value="/login_toLogin" />
            <property name="filterChainDefinitions">
                <value>
                /static/login/**             = anon
                /static/js/myjs/**             = authc
                /static/js/**                 = anon
                /uploadFiles/uploadImgs/**     = anon
                   /code.do                     = anon
                   /login_login                 = anon
                   /app**/**                     = anon
                   /weixin/**                     = anon
                   /swagger/**                    = anon
                   /v2/api-docs                = anon
                   /api-docs                    = anon
                   /api-docs/**                = anon
                /webjars/**                 = anon
                /swagger-ui.html            = anon
                /api/**                     = anon
                /assets/**                  = anon
                /fonts/**                   = anon
                /maps/**                    = anon
                /api/_devops_/init          = anon
                /configuration/ui           = anon
                /configuration/security     = anon
                /scripts/**                 = anon
                /styles/**                  = anon
                /auth.html                  = anon
                   /**                            = authc
                </value>
            </property>
        </bean>
    <!-- ================ Shiro end ================ -->

這是ApplicationContext-mvc.xml:

<mvc:annotation-driven/>    

     <!-- 這是看網上一大堆教程是加的 start-->
    <mvc:resources mapping="/webjars/*" location="classpath:/META-INF/resources/webjars/" />
    <mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/swagger-ui.html" />
    <mvc:resources mapping="/swagger/**" location="/,/swagger/" />
    <!-- 這是看網上一大堆教程是加的 end-->
    <mvc:default-servlet-handler/>

    <!-- 這是看網上一大堆教程是加的 start-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

    <!-- 這是看網上一大堆教程是加的 end-->
    <!-- 對靜態資原始檔的訪問  restful-->     
    <mvc:resources mapping="/admin/**" location="/,/admin/" />
    <mvc:resources mapping="/static/**" location="/,/static/" />
    <mvc:resources mapping="/plugins/**" location="/,/plugins/" />
    <mvc:resources mapping="/uploadFiles/**" location="/,/uploadFiles/" /> 
    <context:component-scan base-package="com.fh.controller" />
    <context:component-scan base-package="com.json" />
    
    <bean class="com.fh.swagger.SwaggerConfig"/>
    <!-- 訪問攔截  -->  
      <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**/**"/>

<!-- 這是看網上一大堆教程是加的start-->
            <mvc:exclude-mapping path="/swagger*/**"></mvc:exclude-mapping>
            <mvc:exclude-mapping path="/v2/**"></mvc:exclude-mapping>
            <mvc:exclude-mapping path="/webjars/**"></mvc:exclude-mapping>

<!-- 這是看網上一大堆教程是加的 end-->
            <bean class="com.fh.interceptor.LoginHandlerInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
     
    <!-- 配置SpringMVC的檢視解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
    <bean id="exceptionResolver" class="com.fh.resolver.MyExceptionResolver"></bean>
    <!-- 上傳攔截,如最大上傳值及最小上傳值 -->
      <bean id="multipartResolver"   class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >   
          <property name="maxUploadSize">    
              <value>5368709120</value>    
           </property>   
            <property name="maxInMemorySize">    
                <value>4096</value>    
            </property>   
             <property name="defaultEncoding">    
                <value>utf-8</value>    
            </property> 
    </bean>  
    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html; charset=UTF-8</value>
                <value>application/json;charset=UTF-8</value>
            </list>
        </property>
    </bean>

 chrom控制檯:

日誌輸出內容: 

2018-09-17 11:20:20 -687284 [http-8080-3] DEBUG   - Looking up handler method for path /swagger/index.html
2018-09-17 11:20:20 -687285 [http-8080-3] DEBUG   - looking up handler for path: /swagger/index.html
2018-09-17 11:20:20 -687285 [http-8080-3] DEBUG   - Did not find handler method for [/swagger/index.html]
2018-09-17 11:20:21 -688233 [http-8080-3] DEBUG   - Looking up handler method for path /v2/api-docs
2018-09-17 11:20:21 -688234 [http-8080-3] DEBUG   - looking up handler for path: /v2/api-docs
2018-09-17 11:20:21 -688234 [http-8080-3] DEBUG   - Returning handler method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]

(經過除錯,是進入index.html先執行/v2/api-docs,然後執行swagger2controller的getDocumentation方法) 

Returning handler method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]

 然後這裡不知道為什麼返回一個undefined

 這個問題已經困擾我快一個禮拜了

下面是我看的一部分教程,更多的忘了收藏了,反正都差不多....

我一開始是看這篇文章的,但他不提供jar包,而且還少了個classmate-1.3.3.jar,不然啟動服務都報錯

我是看其他文章才完善自己的包的,如果需要我的jar包,在問題解決前可以留言郵箱,或者我後面文章加上去

急用的話可以去maven中央倉庫下載,jar包我前面寫了,注意看包名,因為這個浪費了我一下午時間

jar在我csdn的資源裡面上傳了,上傳最低要1積分。。。沒積分的可以留郵箱給我我不定時地過來看看

相關推薦

新人求助mavenspringboot專案使用swagger2

上個禮拜老大分配任務給我,公司專案需要生成介面文件,在網上找了許多文章,嘗試過各種辦法依舊無法讀取 先上圖: 這是SwaggerConfig.java的內容: package com.fh.swagger; import org.springframework.c

Maven外掛構建Springboot專案生成Docker映象

一.Window平臺 .使用標準Spring Boot應用程式的Maven配置,建立springboot專案並測試。 新增Dockerfile:在src/main/resources下新增Dockerfile FROM java MAINTAINER "xiaoming

ant自動化構建maven的java web專案

java web專案部署可能主要分兩個步驟:1.更新程式碼輸出專案包 2.拷貝專案包部署到伺服器 目前公司的專案部署第二個步驟通過指令碼都已實現,但是第一個步驟仍然是手動非常煩鎖,公司配置的電腦卡的要死,eclipse每次開啟更新程式碼編譯都要耗費很長時間,所以最後想想還是寫個指令碼來自動更新打

docker部署pinpoint監控docker中的Springboot專案

pinpoint是一個開源的java監控專案,也是分散式監控專案中比較知名的。 網上有比較多的pinpoint部署指南,但都是基於主機部署的,這一篇主要是講將pinpoint部署到docker中,並監控同樣部署在docker的Springboot專案。 pi

五分鐘後你將學會在SpringBoot專案中如何整合CAT呼叫鏈

買買買結算系統 一年一度的雙十一購物狂歡節就要到了,又到剁手黨們開始表演的時刻了。當我們把種草很久的商品放入購物車以後,點選“結算”按鈕時,就來到了買買買必不可少的結算頁面了。讓我們虛擬一個買買買結算系統,為結算頁面提供商品、促銷、庫存等結算資訊,就此係統展開如何在SpringBoot專案中整合CAT呼叫

eclipse oxygen版本使用maven方式建立SpringBoot專案

1,首先需要安裝maven,參考連結https://blog.csdn.net/tc11331144/article/details/79915354 2,eclipse配置maven,參考連結https://blog.csdn.net/tc11331144/article/details/79

jenkins+maven+svn實現springboot專案的自動化部署過程

前言      在安裝之前,我想說明一下本文的目的,jenkins的一款持續整合工具,      它可以做的事情很多,其中一個主要的功能就是簡化部署流程     &nbs

使用Maven外掛構建SpringBoot專案,生成Docker映象push到DockerHub上

一個用於構建和推送Docker映象的Maven外掛。 使用Maven外掛構建Docker映象,將Docker映象push到DockerHub上,或者私有倉庫,上一篇文章是手寫Dockerfile,這篇文章藉助開源外掛docker-maven-plugin 進行

linux系統:maven構建的springboot專案從打包到執行

                           &

SSM框架整合搭建流程記錄maven方式

簡答描述以及環境介紹 本人採用開發工具為Eclipse,JDK版本為1.8 tomcat為7.0,啟動未報錯。初學者建議根據2345678流程操作 匯入Jar包 利用逆向工程自動生成 實體類,Mapper介面,mapper檔案 編輯web.xml(配置s

【轉】PHP開發經驗之談看了受益

his 則表達式 處理 手冊 調用 緩存系統 字符串操作函數 如果能 諸多 用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會,註意:只有echo能這麽做,它是一種可以把多個字符串當作參數的“函數”(譯註:PHP手冊中

藍的成長記——追逐DBA(10):飛刀防身熟絡而專長:擺弄中間件Websphere

native 歷程 server 業界 http 由於 虛擬機 基礎 fill 原創作品,出自 “深藍的blog” 博客。歡迎轉載,轉載時請務必註明出處。否則追究版權法律責任。 深藍的blog:http://blog.csdn.net/huangyanlong/ar

二叉樹(11)----求二叉樹的鏡像遞歸和遞歸方式

temp right 二叉樹 -a data nbsp rac art urn 1、二叉樹定義: typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; type

阻塞與阻塞同步與異步

通過 部件 一個 socket 沒有 事件觸發 sel syn 就會 在進行網絡編程時,我們常常見到同步(Sync)/異步(Async),阻塞(Block)/非阻塞(Unblock)四種調用方式:同步: 所謂同步,就是在發出一個功能調用時,在沒有得到結果之前,

十二、事件委托泛型委托集合(泛型和泛型)Lambda表達式(聲明委托使用委托簡單的委托示例action<T>和func<t>委托多播委托匿名方法Lambda表達式參數事件)

multicast new 調用方法 多播 ted 被調用 輸入參數 pac cas 事件(Event) 事件是一種對象或類能夠提供通知的成員,客戶端可以通過提供事件處理程序為相應的事件可添加可執行代碼,事件可以理解為一種特殊的委托。 委托(Delegate) 委托是存有對

SQL Server 聚集索引的覆蓋連接交叉和過濾 <第二篇>

相對 col 超過 引用 保持 書簽 基本 nbsp 當我   在SQL Server中,非聚集索引其實可以看做是一個含有聚集索引的表,但相對實際的表來說,非聚集索引中所存儲的表的列數要少得多,一般就是索引列,聚集鍵(或RID)。非聚集索引僅僅包含源表中的非聚集索引的列和指

關於同步異步阻塞阻塞的簡單介紹

電視 書店 阻塞非阻塞 通信 之前 不能 函數 噪音 被調用 同步、異步、阻塞、非阻塞 同步:所謂同步就是當一個*調用另一個*時,在沒有得到結果之前,該*調用*就不返回東西,一旦有結果,就得到返回值了。異步:所謂異步同同步相反,當一個*調用一個*時發出時,調用直接得到返回,

Java鎖之重入鎖(Reentrantlock)原理公平鎖與公平鎖

一個 star spa void 模板 ont thread fin 模式 1、特點: 已獲取鎖的線程再次請求鎖,可以直接獲取。 2、實現: 自定義內部類 Sync,繼承 AbstarctQueuedSynchronizer : 2.1、獲取鎖:lock() a、公平鎖:

阻塞、阻塞同步、異步總結

非阻塞 阻塞 同步 異步 總結 阻塞、非阻塞 主要作用在調用方或請求方,如果調用方或請求方是一直等著不幹其它任何事情,就是阻塞方式,如果調用方或請求方在請求之後一邊等待一邊去做其它事情,這種方式則為非阻塞方式。 同步、異步 同步、異步是調用或請求機制,主要看被調用方或被請求方對結果的處理,

對阻塞阻塞同步異步的深入理解

一個 以太網 結果 情況下 spa nbsp emc sock 過程 以前寫過一篇對於這幾個概念的粗略解釋,現在再深入一些。 同步和異步的區別: 同步是調用協議中結果在調用完成時返回,調用過程中參與雙方處於一種狀態同步的過程。 異步是指調用方發出請求就立即返回。 請求甚至可