`
jinnianshilongnian
  • 浏览: 21499347 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2417769
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3008059
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5638956
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:259806
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597030
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250107
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5858146
Group-logo
跟我学Nginx+Lua开...
浏览量:701782
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:784897
社区版块
存档分类
最新评论

Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

阅读更多

扫一扫,关注我的公众号 

 

我的新书 购买地址

 

之前有一篇《5分钟构建spring web mvc REST风格HelloWorld》介绍了普通方式开发spring web mvc web service。接下来看看使用spring boot如何快速构建一个。

 

Spring Boot使我们更容易去创建基于Spring的独立和产品级的可以”即时运行“的应用和服务。支持约定大于配置,目的是尽可能快地构建和运行Spring应用。

 

之前我们创建基于Spring的项目需要考虑添加哪些Spring依赖和第三方的依赖。使用Spring Boot后,我们可以以最小化的依赖开始spring应用。大多数Spring Boot应用需要很少的配置即可运行,比如我们可以创建独立独立大Java应用,然后通过java -jar运行启动或者传统的WAR部署。其也提供了命令行工具来直接运行Spring脚本(如groovy脚本)。也就是说Spring Boot让Spring应用从配置到运行变的更加简单,但不对Spring本身提供增强(即额外的功能)。

 

目的:

让所有Spring开发变得更快,且让更多的人更快的进行Spring入门体验,提供“starter” POM来简化我们的Maven配置(也就是说使用Spring Boot只有配合maven/gradle等这种依赖管理工具才能发挥它的能力),不像以前,构建一个springmvc项目需要进行好多配置等

开箱即用,快速开始需求开发而不被其他方面影响(如果可能会自动配置Spring)

 

提供一些非功能性的常见的大型项目类特性(如内嵌服务器、安全、度量、健康检查、外部化配置),如可以直接地内嵌Tomcat/Jetty(不需要单独去部署war包)

绝无代码生成,且无需XML配置

 

我的构建环境

JDK 7

Maven 3

Servlet3容器 

 

创建项目

首先使用Maven创建一个普通Maven应用即可,不必是web的。

 

添加Spring Boot相关POM配置

在pom.xml中添加如下配置

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>0.5.0.BUILD-SNAPSHOT</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- Package as an executable JAR -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <!-- Allow access to Spring milestones and snapshots -->
    <!-- (you don't need this if you are using anything after 0.5.0.RELEASE) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

继承spring-boot-starter-parent后我们可以继承一些默认的依赖,这样就无需添加一堆相应的依赖,把依赖配置最小化;spring-boot-starter-web提供了对web的支持,spring-boot-maven-plugin提供了直接运行项目的插件,我们可以直接mvn spring-boot:run运行。

 

实体

package com.sishuok.entity;

/**
 * <p>User: Zhang Kaitao
 * <p>Date: 13-12-22
 * <p>Version: 1.0
 */
public class User {
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        User user = (User) o;

        if (id != null ? !id.equals(user.id) : user.id != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        return id != null ? id.hashCode() : 0;
    }
}

 

控制器

package com.sishuok.controller;

import com.sishuok.entity.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>User: Zhang Kaitao
 * <p>Date: 13-12-22
 * <p>Version: 1.0
 */
//@EnableAutoConfiguration
@RestController
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/{id}")
    public User view(@PathVariable("id") Long id) {
        User user = new User();
        user.setId(id);
        user.setName("zhang");
        return user;
    }

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

}

 

运行  

第一种方式

通过在UserController中加上@EnableAutoConfiguration开启自动配置,然后通过SpringApplication.run(UserController.class);运行这个控制器;这种方式只运行一个控制器比较方便;

第二种方式

通过@Configuration+@ComponentScan开启注解扫描并自动注册相应的注解Bean

package com.sishuok;

import com.sishuok.controller.UserController;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * <p>User: Zhang Kaitao
 * <p>Date: 13-12-22
 * <p>Version: 1.0
 */
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

到此,一个基本的REST风格的web应用就构建完成了。

 

地址栏输入http://localhost:8080/user/1即可看到json结果。

 

 

如果大家查看其依赖,会发现自动添加了需要相应的依赖(不管你用/不用),但是开发一个应用确实变得非常快速,对于想学习/体验Spring的新手,快速建立项目模型等可以考虑用这种方式。当然如果不想依赖这么多的jar包,可以去掉parent,然后自己添加依赖。 

 

欢迎加入spring群134755960进行交流。

 

参考

https://github.com/spring-projects/spring-boot

 

28
5
分享到:
评论
30 楼 wangyudong 2017-11-27  
由Spring Boot实现的微服务需要有比较好的工具去测试RESTful API,很多REST Client是不支持自动化测试RESTful API,也不支持自动生成API文档.
之前习惯用一款名字为 WisdomTool REST Client,支持自动化测试RESTful API,输出精美的测试报告,并且自动生成精美的RESTful API文档。
轻量级的工具,功能却很精悍哦!

https://github.com/wisdomtool/rest-client

Most of REST Client tools do not support automated testing.

Once used a tool called WisdomTool REST Client supports automated testing, output exquisite report, and automatically generating RESTful API document.

Lightweight tool with very powerful features!

https://github.com/wisdomtool/rest-client
29 楼 Liuxianglin 2017-11-08  
数据库去哪了?
28 楼 a3618392 2017-04-10  
还不错,我也推荐一个SpringBoot干货系列的博客:
这个博主写的干货教程很棒,很适合新手脱坑
http://tengj.top
27 楼 恋无涯 2017-01-22  
呵呵6666 写道
spring boot基础学习系列文章:http://www.roncoo.com/article/detail/124661
广告打的蛮远的,有点烂
26 楼 w846492130_1 2016-12-30  
为啥我总觉得 spring boot  是 nodejs+soa 使用 tcp/ip 通信的变种呢
25 楼 清风飞扬1988 2016-10-28  
点击链接加入群【Spring Boot Cloud  交流】:http://jq.qq.com/?_wv=1027&k=40umhEo
24 楼 呵呵6666 2016-10-11  
spring boot基础学习系列文章:http://www.roncoo.com/article/detail/124661
23 楼 flystarfly 2016-08-24  
zyj_daan 写道
为什么我运行main函数,eclipse就直接要结束进程,什么错误信息都没有?先mvn install了的

我也是install成功了的,但是还是没法运行main函数
22 楼 zyj_daan 2016-08-10  
为什么我运行main函数,eclipse就直接要结束进程,什么错误信息都没有?先mvn install了的
21 楼 zkw0710 2016-08-09  
例子非常好,spring-boot中的tomcat怎样才能绑定域名
20 楼 oaoutoaout 2016-03-24  
田梦桦 写道
体验下零配置的感觉。

看看playframework吧,让你真正体验到什么是飞一般的感觉!
19 楼 liuwuhen 2016-03-14  
赞一个!
18 楼 田梦桦 2015-12-29  
体验下零配置的感觉。
17 楼 lihuanjin 2015-08-27  
16 楼 cactu6 2015-08-21  
入门的好教程,这篇写得也不错,推荐给大家:http://tianmaying.com/tutorial/spring-mvc-quickstart
15 楼 rox 2015-07-23  
涛&哥的秀发呢?
14 楼 ruyi0127 2015-07-01  
涛。哥群进不去
13 楼 javaHacker2010 2015-05-19  
能否把controller和app分开不同的包?
12 楼 string2020 2015-03-13  
@RestController   和 @Controller   有什么区别?
11 楼 yanguoyingliu 2014-12-25  
前面弄错了,先用maven install下载所需jar,然后在运行main函数。

相关推荐

    使用Spring MVC创建REST服务简单例子

    在IT行业中,Spring MVC是一个广泛使用的Java框架,用于构建Web应用程序,特别是对于处理HTTP请求和响应。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,它基于HTTP协议,实现了...

    史上最简单的spring boot程序

    Java是编程语言,Spring Boot是构建在这个语言上的框架,而“helloworld”则暗示了这是一个基础的教学示例,用来展示如何使用Spring Boot来开发简单的Java应用。 至于压缩包中的文件“helloworld-1”,根据命名习惯...

    2_构建一个简单的spring-boot的RESTful Web Service项目.zip

    选择"Web"作为起步依赖,因为它包含了Spring Web MVC,这是构建RESTful服务的关键组件。 项目生成后,主要的结构会包括`src/main/java`和`src/main/resources`目录。在`src/main/java`下,你会看到一个主应用类,...

    Spring Boot笔记.docx

    引入`spring-boot-starter-web`依赖,它包含了Spring MVC和Tomcat等Web开发所需的核心组件: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-web ``` 4. 编写控制器与...

    Spring Boot.pdf

    Spring Boot HelloWorld 示例展示了如何创建一个简单的 web 应用程序,使用 Maven 创建一个标准的 Java 项目,并添加 spring-boot-starter-web 依赖以支持构建 web 应用。编写主程序类,使用 @SpringBootApplication...

    Intellij IDEA 搭建Spring Boot项目教程.docx

    5. **HelloWorld示例**:创建一个简单的Spring Boot应用,可以创建一个名为`HelloController`的类,使用`@RestController`注解标识这是一个REST控制器,然后在`hello()`方法中返回“Hello World!”字符串,通过`@...

    spring-boot入门视频

    2. **起步依赖**(Starter POMs):Spring Boot 提供了一系列的起步依赖,如 `spring-boot-starter-web`、`spring-boot-starter-data-jpa` 等,它们包含了一组默认的、常用依赖,使得添加依赖变得更加简单。...

    spring boot restful服务小例子

    在“spring boot restful服务小例子”中,我们重点讨论的是如何使用 Spring Boot 构建 RESTful Web 服务。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于 HTTP 协议,可以...

    Spring boot基础文档范本模板.pdf

    在创建第一个 Spring Boot 项目时,通常至少会包含 Web 依赖,以便构建 web 应用。 创建完成后,IDEA 会自动生成项目结构。在 Spring Boot 项目中,通常遵循 MVC 设计模式来组织代码。因此,我们会创建以下四个包:...

    spring 小项目

    在这个"spring 小项目"中,你可能正在经历从零开始构建一个基于Spring Boot的应用程序的过程,包括设置基础环境、编写 HelloWorld 示例以及解决遇到的小问题。 首先,让我们深入了解一下Spring Boot的核心特点: 1...

    hello-world-rest:Springboot Hello World REST服务

    "hello-world-rest:Springboot Hello World REST服务"是一个典型的入门级项目,它展示了如何使用Spring Boot创建一个简单的RESTful Web服务。REST(Representational State Transfer)是一种架构风格,常用于构建Web...

    sample-spring-boot-hello-world

    5. **Hello World示例**:在"sample-spring-boot-hello-world"项目中,很可能会有一个简单的Controller,它通过`@RestController`注解标记为REST控制器,并且有一个方法,可能使用`@RequestMapping`或`@GetMapping`...

    Basic-Spring-Boot-WebApp:基本的Spring Boot WebApp

    "Basic-Spring-Boot-WebApp"项目是一个基础的Spring Boot Web应用示例,展示了如何使用Spring Boot快速构建一个具备REST API功能的Web服务。通过学习这个项目,开发者可以了解到Spring Boot的核心概念,包括自动配置...

    spring-boot-hello:Spring引导你好

    《Spring Boot Hello:深入浅出理解Spring Boot基础》 在当今的Java开发领域,Spring Boot以其简洁、快速的启动方式,以及对微服务架构的强大支持,成为开发者们钟爱的框架之一。本篇文章将深入探讨“Spring Boot ...

    SpringMVC HelloWorld Restfull 项目

    在本项目中,“HelloWorld Restfull”意味着我们将构建一个基础的示例应用,它不仅会展示如何设置和运行 SpringMVC 项目,还会涉及到 RESTful 风格的 API 设计。 1. **SpringMVC 概述** - MVC 模式:将应用程序...

    Springboot_Tutorial:使用Spring创建“ Hello World” RESTful Web服务的教程

    在本教程中,我们将深入探讨如何使用Spring Boot创建一个简单的"Hello World" RESTful Web服务。Spring Boot是Java生态系统中的一个流行框架,它简化了设置和配置过程,使得开发人员可以快速启动和运行应用程序。 ...

    从零搭建Spring Boot脚手架,增加通用的功能.docx

    Rest&lt;String&gt; result = RestBody.okData("Hello, World!", "数据加载成功"); ``` - 失败情况下的返回: ```java Rest&lt;Void&gt; errorResult = RestBody.failure(404, "资源未找到"); ``` ### 三、模块化设计与...

    spring-boot-rest-api:基本的REST API

    在Spring Boot中,REST API的构建主要依赖于Spring MVC,这是一个用于构建Web服务的强大模块。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,能够通过URI...

    spring入门环境部署

    在弹出的窗口中,填写项目名,选择合适的Group和Artifact ID,确保选中“Spring Web”选项,这将为你引入必要的Spring MVC和Web依赖。 现在,项目已经创建好,但我们需要使用Maven来管理依赖。Maven是一个项目管理...

Global site tag (gtag.js) - Google Analytics