提交 fdf7f6b7 编写于 作者: S shenhongxi

swagger

上级 3427c506
启动后访问 http://localhost/ <br />
启动后访问 http://localhost:8081/ <br />
swagger http://localhost:8081/swagger-ui.html
mvn clean package -DskipTests <br />
得到的jar包中的MANIFEST.MF其中几行: <br />
......
......@@ -14,6 +14,9 @@
<!-- The main class to start by executing java -jar -->
<start-class>com.itlong.whatsmars.spring.boot.App</start-class>
<motan.version>0.1.1</motan.version>
<springfox.swagger2.version>2.5.0</springfox.swagger2.version>
<google.gson.version>2.8.0</google.gson.version>
<google.guava.version>20.0</google.guava.version>
</properties>
<parent>
......@@ -117,6 +120,36 @@
<version>1.0.31</version>
</dependency>
<!-- Swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox.swagger2.version}</version>
</dependency>
<!-- google -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${google.gson.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${google.guava.version}</version>
</dependency>
</dependencies>
......
package com.itlong.whatsmars.spring.boot.common;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* Created by shenhongxi on 2017/8/2.
*/
@Component
public class ProfileUtils implements InitializingBean {
@Autowired
private Environment env;
private static final String PROFILE_PROD = "prod";
private static final String PROFILE_TEST = "test";
private static final String PROFILE_DEV = "dev";
private static List<String> profiles = Collections.unmodifiableList(new ArrayList<String>());
@Override
public void afterPropertiesSet() throws Exception {
profiles = Collections.unmodifiableList(Arrays.asList(env.getActiveProfiles()));
}
public static boolean isProd() {
return profiles.contains(PROFILE_PROD);
}
public static boolean isTest() {
return profiles.contains(PROFILE_TEST);
}
public static boolean isDev() {
return profiles.contains(PROFILE_DEV);
}
public static List<String> getProfiles() {
return profiles;
}
}
package com.itlong.whatsmars.spring.boot.config;
import com.fasterxml.classmate.TypeResolver;
import com.itlong.whatsmars.spring.boot.App;
import com.itlong.whatsmars.spring.boot.common.ProfileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.http.ResponseEntity;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.WildcardType;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.UiConfiguration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import static springfox.documentation.schema.AlternateTypeRules.newRule;
@Profile({"dev", "test"})
@ConditionalOnClass(EnableSwagger2.class)
@EnableSwagger2
@Configuration
public class SwaggerConfig {
@Autowired
private TypeResolver typeResolver;
@Autowired
private Environment env;
@Bean
public Docket swaggerSpringMvcPlugin() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("business-api")
.select()
.apis(RequestHandlerSelectors.basePackage(App.class.getPackage().getName()))
.paths(PathSelectors.any())
.build()
.pathMapping("/")
.genericModelSubstitutes(ResponseEntity.class)
.alternateTypeRules(newRule(typeResolver.resolve(DeferredResult.class, typeResolver.resolve(ResponseEntity.class, WildcardType.class)), typeResolver.resolve(WildcardType.class)))
// .enableUrlTemplating(true)
.useDefaultResponseMessages(true)
.forCodeGeneration(false)
.host(host())
.apiInfo(apiInfo());
}
@Bean
public UiConfiguration uiConfig() {
return new UiConfiguration(
"validatorUrl",// url
"none", // docExpansion => none | list
"alpha", // apiSorter => alpha
"schema", // defaultModelRendering => schema
UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS,
false, // enableJsonEditor => true | false
true); // showRequestHeaders => true | false
}
private String host() {
String port = env.getProperty("server.port");
if (ProfileUtils.isDev()) {
return "localhost:" + port;
}
return "test.toutiao.im";
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Toutiao API")
.description("用于调试Toutiao RestAPI,只在test/dev中放开,prod中关闭")
.version("0.1")
.build();
}
}
\ No newline at end of file
......@@ -10,6 +10,7 @@ import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.AbstractLocaleResolver;
......@@ -49,7 +50,7 @@ public class SampleController {
@RequestMapping("/changeLang")
@ResponseBody
public String changeLang(HttpServletRequest request, HttpServletResponse response, String lang){
public String changeLang(HttpServletRequest request, HttpServletResponse response, @RequestParam String lang){
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
if ("zh".equals(lang)) {
// request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, new Locale("zh", "CN"));
......@@ -61,7 +62,7 @@ public class SampleController {
return "lang:" + LocaleContextHolder.getLocale().getLanguage();
}
@RequestMapping("/")
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Map<String,Object> map) {
System.out.println(LocaleUtils.isEnLocale());
map.put("hello", "Hi, boy!");
......
server.port: 80
server.port: 8081
spring.session.store-type=redis
server.session.timeout=14400
......
......@@ -2,7 +2,7 @@
#spring.profiles.active=dev
spring.profiles.active=test
spring.profiles.active=dev
spring.thymeleaf.cache=false
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册