compile 'org.springframework.boot:spring-boot-starter-web:1.4.0.RELEASE'
compile 'net.sf.json-lib:json-lib:2.4:jdk15'
compile 'org.apache.httpcomponents:httpcore:4.4.10'
compile 'org.apache.httpcomponents:httpmime:4.5.6'
compile 'org.apache.httpcomponents:httpclient:4.5.6'
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
最小代码的springboot工程:
settings.gradle:
/*
- This settings file was generated by the Gradle 'init' task.
*
- The settings file is used to specify which projects to include in your build.
- In a single project build this file can be empty or even removed.
*
- Detailed information about configuring a multi-project build in Gradle can be found
- in the user guide at https://docs.gradle.org/4.3/userguide/multi_project_builds.html
*/
/*
// To declare projects as part of a multi-project build use the 'include' method
include 'shared'
include 'api'
include 'services:webservice'
*/
rootProject.name = 'testcase'
build.gradle
apply plugin: 'java-library'
apply plugin: 'org.springframework.boot'
buildscript {
repositories {
maven {
name 'Aliyun Maven Repository'
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:1.5.18.RELEASE"
classpath "io.spring.gradle:dependency-management-plugin:1.0.5.RELEASE"
}
}
// In this section you declare where to find the dependencies of your project
repositories {
maven {
name 'Aliyun Maven Repository'
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
jcenter()
}
springBoot {
executable = true
mainClass = 'com.casetest.TestCaseBoot'
}
dependencies {
//Spring boot
compile 'org.springframework.boot:spring-boot-starter-web:1.5.18.RELEASE'
// Swagger2
compile 'io.github.swagger2markup:swagger2markup:1.3.3'
compile 'io.springfox:springfox-swagger2:2.9.0'
compile 'io.springfox:springfox-swagger-ui:2.9.0'
api 'org.apache.commons:commons-math3:3.6.1'
implementation 'com.google.guava:guava:23.0'
testImplementation 'junit:junit:4.12'
}
src下的文件:
package com.casetest;
import java.io.IOException;
import java.util.ArrayList;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2
@SpringBootApplication
@ServletComponentScan //启动器启动时,扫描本目录以及子目录带有的webservlet注解的
public class TestCaseBoot {
public static void main(String[] args) throws IOException {
SpringApplication.run(TestCaseBoot.class, args);
System.out.println("success");
}
/*@Bean // 一定要加,不然这个方法不会运行 // 一定要返回ServletRegistrationBean
public ServletRegistrationBean getServletRegistrationBean() {
ServletRegistrationBean bean = new ServletRegistrationBean(new CaseTwoServlet());
bean.addUrlMappings("/secondServlet"); // 访问路径值
return bean;
}*/
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2).groupName("agent").select()
.apis(RequestHandlerSelectors.basePackage("com.casetest"))
.paths(PathSelectors.any())
.paths(PathSelectors.ant("/api/**/*"))
.build()
.apiInfo(new ApiInfo("API", "这App等相关的API", "v3", "Terms of service",
new Contact("Test", "http://www.testcase.com", ""), "", "", new ArrayList<>()));
}
}
package com.casetest.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
@ComponentScan({
"com.casetest.rs",
"com.casetest.schedule",
"com.casetest.service"
})
public class WebAutoConfiguration {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
package com.casetest.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
.maxAge(3600)
.allowCredentials(true);
}
}
package com.casetest.rs;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/case/one")
@RestController
public class CaseOneRS {
@RequestMapping(value="/sayHi",method= {RequestMethod.GET})
public String sayHi(String name) {
return "Hi " + name;
}
@RequestMapping(value="/sayHi",method= {RequestMethod.POST})
public String replyHi(String name) {
return "me to " + name;
}
}
package com.casetest.rs;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns="/api/case/two",loadOnStartup=1)
public class CaseTwoServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get....");
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("post....");
super.doPost(req, resp);
}
}