spring boot + swagger + mybatis-plus generator

spring boot + swagger + mybatis-plus generator

[TOC]

參考資料

github/SpringForAll/spring-boot-starter-swagger

這是一個(gè)整合套件,readme.xml 中包含了詳細(xì)配置說(shuō)明,包括:

  • pom.xml 配置
  • 啟動(dòng)類(lèi)注解配置
  • application.yml 配置

pom.xml

<!-- swagger api 生成器套件 -->
<dependency>
  <groupId>com.spring4all</groupId>
  <artifactId>swagger-spring-boot-starter</artifactId>
  <version>1.9.0.RELEASE</version>
</dependency>

啟動(dòng)類(lèi)開(kāi)啟 swagger

在啟動(dòng)類(lèi)上添加 @EnableSwagger2Doc 注解,參考

import com.spring4all.swagger.EnableSwagger2Doc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableSwagger2Doc
@SpringBootApplication
public class BasicApplication {

    public static void main(String[] args) {
        SpringApplication.run(BasicApplication.class, args);
    }
}

定義靜態(tài)資源映射目錄

SpringBoot集成Swagger2配置及出現(xiàn)的問(wèn)題記錄

原因:

因?yàn)閟wagger-ui.html相關(guān)的所有前端靜態(tài)文件都在springfox-swagger-ui-x.x.x.jar里面,在yml文件中配置了mvc.static-path-pattern: /static/** 導(dǎo)致swagger-ui.html相關(guān)的所有前端靜態(tài)文件映射不到但两。
解決方案:

定義靜態(tài)資源映射目錄胳施,addResoureHandler指的是對(duì)外暴露的訪(fǎng)問(wèn)路徑奇适,addResourceLocations指的是文件放置的目錄

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
    }
}

application.yml 配置

這個(gè)配置隨環(huán)境走谜酒,由具體的環(huán)境控制是否開(kāi)關(guān)

swagger:
  enabled: true
  host: 10.11.18.201:8061

這個(gè)配置是公共的,不展示 spring boot 自帶/error請(qǐng)求路徑下的 api 接口妻枕。

swagger:
  exclude-path: /error
  authorization:
    key-name: Authorization

mybatis-plus generator 配置

/**
 * 全局配置
 *
 * @param projectPath
 * @return
 */
private static GlobalConfig createGlobalCfg(String projectPath) {
    GlobalConfig gc = new GlobalConfig();
    gc.setOutputDir(projectPath + "/src/main/java");
    gc.setAuthor("rbzy");
    gc.setOpen(false);
    // 實(shí)體屬性 Swagger2 注解
    gc.setSwagger2(true);
    return gc;
}

鑒權(quán)問(wèn)題

自定義攔截器配置

spring boot 加入攔截器后swagger不能訪(fǎng)問(wèn)問(wèn)題

不要攔截這些 "/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"

spring boot 集成swagger并且使用攔截器的配置問(wèn)題

寫(xiě)的比較詳細(xì)一些

另外提到了 /error僻族,不攔截 spring boot 自帶/error請(qǐng)求路徑下的 api 接口。

import com.wdzggroup.rbzy.oa.interceptor.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.config.annotation.*;

/**
 * 加載靜態(tài)資源類(lèi)
 * liuzhize 2019年3月7日下午3:25:49
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(LoginInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/error")
                .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html");
    }

    @Bean
    public LoginInterceptor LoginInterceptor() {
        return new LoginInterceptor();
    }
}

shiro

shiro 整合swagger2的坑

@Configuration
public class ShiroConfig {

    @Bean
    public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        shiroFilterFactoryBean.setSecurityManager(securityManager);

        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();

        filterChainDefinitionMap.put("/swagger-ui.html", "anon");
        filterChainDefinitionMap.put("/swagger-resources/**", "anon");
        filterChainDefinitionMap.put("/webjars/**", "anon");
        filterChainDefinitionMap.put("/v2/**", "anon");

        //配置shiro默認(rèn)登錄界面地址屡谐,前后端分離中登錄界面跳轉(zhuǎn)應(yīng)由前端路由控制述么,后臺(tái)僅返回json數(shù)據(jù)
        Map<String, Filter> filters = shiroFilterFactoryBean.getFilters();
        // 注意這里不要用Bean的方式,否則會(huì)報(bào)錯(cuò)
        filters.put("authc", new ShiroUserFilter());
        shiroFilterFactoryBean.setFilters(filters);
        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);

        return shiroFilterFactoryBean;
    }

swagger 生成的 api 接口調(diào)用時(shí)的鑒權(quán)問(wèn)題

詳見(jiàn)參考資料中愕掏,github/SpringForAll/spring-boot-starter-swagger swagger 套件的 readme.md 通過(guò)配置實(shí)現(xiàn)鑒權(quán)度秘,摘錄如下

swagger:
  authorization:
    key-name: Authorization

項(xiàng)目發(fā)布 docker 后,swagger 生成的 api 拿不到端口號(hào)問(wèn)題

通過(guò)指定端口號(hào),強(qiáng)制要求 swagger 按照指定的端口號(hào)請(qǐng)求接口

swagger:
  host: 10.11.18.201:8061
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剑梳,一起剝皮案震驚了整個(gè)濱河市唆貌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垢乙,老刑警劉巖锨咙,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異追逮,居然都是意外死亡酪刀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)钮孵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)骂倘,“玉大人,你說(shuō)我怎么就攤上這事巴席±裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵情妖,是天一觀(guān)的道長(zhǎng)睬关。 經(jīng)常有香客問(wèn)我,道長(zhǎng)毡证,這世上最難降的妖魔是什么电爹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮料睛,結(jié)果婚禮上丐箩,老公的妹妹穿的比我還像新娘。我一直安慰自己恤煞,他們只是感情好屎勘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著居扒,像睡著了一般概漱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喜喂,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天瓤摧,我揣著相機(jī)與錄音,去河邊找鬼玉吁。 笑死照弥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的进副。 我是一名探鬼主播这揣,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了给赞?” 一聲冷哼從身側(cè)響起机打,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塞俱,沒(méi)想到半個(gè)月后姐帚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡障涯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年罐旗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唯蝶。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡九秀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粘我,到底是詐尸還是另有隱情鼓蜒,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布征字,位于F島的核電站都弹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏匙姜。R本人自食惡果不足惜畅厢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望氮昧。 院中可真熱鬧框杜,春花似錦、人聲如沸袖肥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)椎组。三九已至油狂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寸癌,已是汗流浹背选调。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灵份,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓哮洽,卻偏偏與公主長(zhǎng)得像填渠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容