`
wbj0110
  • 浏览: 1610127 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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中添加如下配置

Java代码   收藏代码
  1. <!-- Inherit defaults from Spring Boot -->  
  2. <parent>  
  3.     <groupId>org.springframework.boot</groupId>  
  4.     <artifactId>spring-boot-starter-parent</artifactId>  
  5.     <version>0.5.0.BUILD-SNAPSHOT</version>  
  6. </parent>  
  7.   
  8. <!-- Add typical dependencies for a web application -->  
  9. <dependencies>  
  10.     <dependency>  
  11.         <groupId>org.springframework.boot</groupId>  
  12.         <artifactId>spring-boot-starter-web</artifactId>  
  13.     </dependency>  
  14. </dependencies>  
  15.   
  16. <!-- Package as an executable JAR -->  
  17. <build>  
  18.     <plugins>  
  19.         <plugin>  
  20.             <groupId>org.springframework.boot</groupId>  
  21.             <artifactId>spring-boot-maven-plugin</artifactId>  
  22.         </plugin>  
  23.     </plugins>  
  24. </build>  
  25.   
  26. <!-- Allow access to Spring milestones and snapshots -->  
  27. <!-- (you don't need this if you are using anything after 0.5.0.RELEASE) -->  
  28. <repositories>  
  29.     <repository>  
  30.         <id>spring-snapshots</id>  
  31.         <url>http://repo.spring.io/snapshot</url>  
  32.         <snapshots><enabled>true</enabled></snapshots>  
  33.     </repository>  
  34.     <repository>  
  35.         <id>spring-milestones</id>  
  36.         <url>http://repo.spring.io/milestone</url>  
  37.         <snapshots><enabled>true</enabled></snapshots>  
  38.     </repository>  
  39. </repositories>  
  40. <pluginRepositories>  
  41.     <pluginRepository>  
  42.         <id>spring-snapshots</id>  
  43.         <url>http://repo.spring.io/snapshot</url>  
  44.     </pluginRepository>  
  45.     <pluginRepository>  
  46.         <id>spring-milestones</id>  
  47.         <url>http://repo.spring.io/milestone</url>  
  48.     </pluginRepository>  
  49. </pluginRepositories>  

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

 

实体

Java代码   收藏代码
  1. package com.sishuok.entity;  
  2.   
  3. /** 
  4.  * <p>User: Zhang Kaitao 
  5.  * <p>Date: 13-12-22 
  6.  * <p>Version: 1.0 
  7.  */  
  8. public class User {  
  9.     private Long id;  
  10.     private String name;  
  11.   
  12.     public Long getId() {  
  13.         return id;  
  14.     }  
  15.   
  16.     public void setId(Long id) {  
  17.         this.id = id;  
  18.     }  
  19.   
  20.     public String getName() {  
  21.         return name;  
  22.     }  
  23.   
  24.     public void setName(String name) {  
  25.         this.name = name;  
  26.     }  
  27.   
  28.     @Override  
  29.     public boolean equals(Object o) {  
  30.         if (this == o) return true;  
  31.         if (o == null || getClass() != o.getClass()) return false;  
  32.   
  33.         User user = (User) o;  
  34.   
  35.         if (id != null ? !id.equals(user.id) : user.id != nullreturn false;  
  36.   
  37.         return true;  
  38.     }  
  39.   
  40.     @Override  
  41.     public int hashCode() {  
  42.         return id != null ? id.hashCode() : 0;  
  43.     }  
  44. }  

 

控制器

Java代码   收藏代码
  1. package com.sishuok.controller;  
  2.   
  3. import com.sishuok.entity.User;  
  4. import org.springframework.boot.SpringApplication;  
  5. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;  
  6. import org.springframework.web.bind.annotation.PathVariable;  
  7. import org.springframework.web.bind.annotation.RequestMapping;  
  8. import org.springframework.web.bind.annotation.RestController;  
  9.   
  10. /** 
  11.  * <p>User: Zhang Kaitao 
  12.  * <p>Date: 13-12-22 
  13.  * <p>Version: 1.0 
  14.  */  
  15. //@EnableAutoConfiguration  
  16. @RestController  
  17. @RequestMapping("/user")  
  18. public class UserController {  
  19.   
  20.     @RequestMapping("/{id}")  
  21.     public User view(@PathVariable("id") Long id) {  
  22.         User user = new User();  
  23.         user.setId(id);  
  24.         user.setName("zhang");  
  25.         return user;  
  26.     }  
  27.   
  28.     //public static void main(String[] args) {  
  29.     //    SpringApplication.run(UserController.class);  
  30.     //}  
  31.   
  32. }  

 

运行  

第一种方式

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

第二种方式

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

Java代码   收藏代码
  1. package com.sishuok;  
  2.   
  3. import com.sishuok.controller.UserController;  
  4. import org.springframework.boot.SpringApplication;  
  5. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;  
  6. import org.springframework.context.annotation.ComponentScan;  
  7. import org.springframework.context.annotation.Configuration;  
  8.   
  9. /** 
  10.  * <p>User: Zhang Kaitao 
  11.  * <p>Date: 13-12-22 
  12.  * <p>Version: 1.0 
  13.  */  
  14. @Configuration  
  15. @ComponentScan  
  16. @EnableAutoConfiguration  
  17. public class Application {  
  18.     public static void main(String[] args) {  
  19.         SpringApplication.run(Application.class);  
  20.     }  
  21. }  

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

 

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

 

 

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

  

参考

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

 

转自:http://jinnianshilongnian.iteye.com/blog/1997192

分享到:
评论

相关推荐

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

    **Spring Boot概述** Spring Boot是由...总结来说,Spring Boot通过简化配置和集成Spring MVC,使得我们能在短短的几分钟内构建出一个RESTful Web服务。这个服务可以作为一个基础,进一步扩展成复杂的应用系统。

    使用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...

    SpringMVC HelloWorld Restfull 项目

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

    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`...

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

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

    spring-boot-hello:Spring引导你好

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

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

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

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

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

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

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

    spring入门环境部署

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

Global site tag (gtag.js) - Google Analytics