网站首页 > 技术文章 正文
一、说明
- 本文使用IDEA创建一个基于SpringBoot的restful服务;
- 需要安装jdk1.8 gradle
- 本文学习内容来自SpringBoot官网。
二、步骤
1. IDEA新建项目
2. 写build.gradle内容
buildscript {
ext {
springBootVersion = '1.5.8.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
group 'com.test'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
等待窗口自动下载完依赖包。
现在目录结构:
3. 创建服务
创建类 src/main/java/hello/Greeting.java
package hello;
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
Springboot使用 Jackson JSON 库来封装JSON。
创建Controller src/main/java/hello/GreetingController.java
package hello;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
}
@RequestMapping 注解
将http请求从/greeting映射到greeting()方法 ,没有指明GET PUT POST,它会接受所有HTTP请求。
如果要指定,可以写:@RequestMapping(method=GET)
@RequestParam 绑定请求参数
上面的示例创建并返回一个新的Greeting对象,包含id和Content属性。Content从counter赋值,name使用了template模板。
@RestController
标记类是一个Controller,返回domain对象而不是view。 相当于@Controller + @ResponseBody。
返回JSON
Spring的MappingJackson2HttpMessageConverter自动将Greeting 转为JSON格式。
创建启动函数 src/main/java/hello/Application.java
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication 会完成以下注解的作用:
- @Configuration 标记这个类作为Spring上下文的bean定义
- @EnableAutoConfiguration 告诉SpringBoot基于classpath的一些配置文件自动配置bean。比如,spring-webvc如果在classpath里,这个注解会让应用程序作为一个web应用,这样就会自动设置 如DispatcherServlet的属性。
- @ComponentScan:告诉Spring在hello包下扫描组件、配置、service、controller等。
这个示例不需要使用web.xml。
三、编译运行
1. 在命令行输入: ./gradlew bootrun
在浏览器输入:http://localhost:8080/greeting
输出:
{"id":1,"content":"Hello, World!"}
2. 也可以使用Gradle菜单运行:
3. 运行编译后的jar
选择Gradle菜单的assemble
在build目录下生成jar,右击并选择 Open In Terminal,输入命令:
jar -jar myrestful-1.0-SNAPSHOT.jar
猜你喜欢
- 2024-11-24 使用Knative部署基于Spring Native的微服务
- 2024-11-24 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- 2024-11-24 ElasticSearch进阶篇之搞定在SpringBoot项目中的实战应用
- 2024-11-24 SpringCloud微服务架构实战:类目管理微服务开发
- 2024-11-24 SpringBoot+SpringCloud题目整理
- 2024-11-24 《github精选系列》——SpringBoot 全家桶
- 2024-11-24 SpringCloud系列:多模块聚合工程基本环境搭建「1」
- 2024-11-24 Spring Cloud Consul快速入门Demo
- 2024-11-24 Spring Cloud Contract快速入门Demo
- 2024-11-24 15年大牛用140多个实战案例深入讲解Java微服务架构文档
- 最近发表
-
- 使用Knative部署基于Spring Native的微服务
- 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- ElasticSearch进阶篇之搞定在SpringBoot项目中的实战应用
- SpringCloud微服务架构实战:类目管理微服务开发
- SpringBoot+SpringCloud题目整理
- 《github精选系列》——SpringBoot 全家桶
- Springboot2.0学习2 超详细创建restful服务步骤
- SpringCloud系列:多模块聚合工程基本环境搭建「1」
- Spring Cloud Consul快速入门Demo
- Spring Cloud Contract快速入门Demo
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)