springboot整合swagger2企业项目搭建

版权声明:本文为博主原创文章,转载请注明来源。

项目包结构图:

springboot整合swagger2企业项目搭建

 

1.本案例使用外部tomcat   

(springboot版本如果太高外置tomcat只能使用8以上)

   博主一开始使用2.0版本springboot 发现项目在tomcat7 下会稳定报错,一番收缩后表示无解

九月 28, 2018 1:39:24 下午 org.apache.catalina.core.AprLifecycleListener init

信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/fengyaojie/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.

九月 28, 2018 1:39:25 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin

警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:oneeth-game' did not find a matching property.

九月 28, 2018 1:39:25 下午 org.apache.coyote.AbstractProtocol init

信息: Initializing ProtocolHandler ["http-bio-9789"]

九月 28, 2018 1:39:25 下午 org.apache.coyote.AbstractProtocol init

信息: Initializing ProtocolHandler ["ajp-bio-9790"]

九月 28, 2018 1:39:25 下午 org.apache.catalina.startup.Catalina load

信息: Initialization processed in 1029 ms

九月 28, 2018 1:39:25 下午 org.apache.catalina.core.StandardService startInternal

信息: Starting service Catalina

九月 28, 2018 1:39:25 下午 org.apache.catalina.core.StandardEngine startInternal

信息: Starting Servlet Engine: Apache Tomcat/7.0.52

九月 28, 2018 1:39:29 下午 org.apache.catalina.startup.ContextConfig processAnnotationsJar

严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/Users/fengyaojie/Downloads/apache-tomcat-7.0.52/jenkinswebapps/ROOT/oneeth-game/WEB-INF/lib/log4j-api-2.10.0.jar!/] for annotations

org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:136)

at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:59)

at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:208)

at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:118)

at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2055)

at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1931)

at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1897)

at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1882)

at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1314)

at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:873)

at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:371)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)

at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

 

   但是8版本完美启动,

如果必须使用7版本请将Springboot 版本降低到 1.5.4

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.4.RELEASE</version>

<relativePath /> <!-- lookup parent from repository -->

</parent>

改到低版本后会出现

springboot整合swagger2企业项目搭建

将import  删除掉

2.以处理打包多环境配置和多环境日志打印

多环境如下图:

springboot整合swagger2企业项目搭建

springboot整合swagger2企业项目搭建日志处理:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration>

<configuration debug="true" scan="true" scanPeriod="30 seconds"><!-- 'milliseconds','seconds','minutes' 

and 'hours' -->

    <springProperty scope="context" name="logPath" source="log.path"/>

<springProperty scope="context" name="logCommonLevel" source="log.commonLevel"/>

<springProperty scope="context" name="logSpringLevel" source="log.springLevel"/>

<springProperty scope="context" name="logName"  source="log.name"/>

<contextName>${logName}</contextName>

<jmxConfigurator />

<!-- 控制台输出日志 -->

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

<pattern>%-5level [%contextName] %d{yyyy-MM-dd HH:mm:ss.SSS}

[%thread] %X{req.remoteHost} %X{req.requestURI} %X{username} %logger.%method:%L

- %msg%n</pattern>

</encoder>

</appender>

<!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份) -->

<appender name="FILE"

class="ch.qos.logback.core.rolling.RollingFileAppender">

<File>${logPath}${logName}.log</File>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- rollover daily -->

<FileNamePattern>${logPath}${logName}-log-%d{yyyy-MM-dd}.%i.zip</FileNamePattern>

<timeBasedFileNamingAndTriggeringPolicy

class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

<maxFileSize>5MB</maxFileSize><!-- or whenever the file size reaches

5MB -->

</timeBasedFileNamingAndTriggeringPolicy>

<!-- <maxHistory></maxHistory> -->

</rollingPolicy>

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

<Pattern>%-5level [%contextName] %d{yyyy-MM-dd HH:mm:ss.SSS}

[%thread] %X{req.remoteHost} %X{req.requestURI} %X{username}

%logger.%method:%L - %msg%n</Pattern>

</encoder>

</appender>

 

<appender name="FILE-ERROR"

class="ch.qos.logback.core.rolling.RollingFileAppender">

<filter class="ch.qos.logback.classic.filter.LevelFilter">

<level>ERROR</level>

<OnMismatch>DENY</OnMismatch>

<OnMatch>ACCEPT</OnMatch>

</filter>

<File>${logPath}${logName}-err.log</File>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- rollover daily -->

<FileNamePattern>${logPath}${logName}-log-err-%d{yyyy-MM-dd}.%i.zip</FileNamePattern>

<timeBasedFileNamingAndTriggeringPolicy

class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

<maxFileSize>5MB</maxFileSize><!-- or whenever the file size reaches

5MB -->

</timeBasedFileNamingAndTriggeringPolicy>

<!-- <maxHistory></maxHistory> -->

</rollingPolicy>

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

<Pattern>%-5level [%contextName] %d{yyyy-MM-dd HH:mm:ss.SSS}

[%thread] %X{req.remoteHost} %X{req.requestURI} %X{username}

%logger.%method:%L - %msg%n</Pattern>

</encoder>

</appender>

 

<!--这里指定logger name 是为jmx设置日志级别做铺垫 -->

<root level="${logCommonLevel}"  >

<appender-ref ref="STDOUT" />

<appender-ref ref="FILE" />

<appender-ref ref="FILE-ERROR" />

</root>

 

<logger name="com.oneeth"/>

 

<logger name="org.springframework" level="${logSpringLevel}" additivity="false">

<appender-ref ref="STDOUT" />

<appender-ref ref="FILE-ERROR" />

</logger>

 

<logger name="org.apache.http.impl.conn.PoolingHttpClientConnectionManager" level="INFO" >

<appender-ref ref="STDOUT" />

</logger>

 

</configuration>

springboot整合swagger2企业项目搭建每个环境打印日志的路径和级别 需要将上图中的配置在每个环境配置文件中进行赋值如下图:

springboot整合swagger2企业项目搭建

 

然后 我们讲讲集成swagger2

引入依赖

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger2</artifactId>

<version>2.9.2</version>

</dependency>

<dependency>

<groupId>com.github.xiaoymin</groupId>

<artifactId>swagger-bootstrap-ui</artifactId>

<version>1.8.4</version>

</dependency>

这里我应为嫌弃swagger2 原生ui丑  所以集成了别人的swagger2—bootstrap—ui

引入依赖后我们需要在项目中配置使用swagger2 

springboot整合swagger2企业项目搭建

然后就可以使用swagger2 了 如下图:

springboot整合swagger2企业项目搭建

在每个接口处都带上swagger2 的注解和接口的参数和返回值  我们开发完每一个接口  接口文档就可以自动生成了

springboot整合swagger2企业项目搭建springboot整合swagger2企业项目搭建springboot整合swagger2企业项目搭建

 

还可以在线调试接口springboot整合swagger2企业项目搭建

很多东西 无法一一细说!!!请自行研究!

项目已上传github

路径为:

https://github.com/fengyaojie/springBoot