当前位置: 首页 > news >正文

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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

之前有一篇《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

 

转载于:https://my.oschina.net/mickelfeng/blog/1543695

相关文章:

  • python 模块包裹
  • no.6 字符串和格式化输入/输出02
  • 从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理
  • jquery操作字符串常用方法总结及工作代码
  • retrofit post请求多文件,partMap用法
  • 【转载】Etcd+Confd实现Nginx配置文件自动管理
  • C#编程(五十五)----------HashSet和SortedSet
  • 云非万能!云计算不能解决的三大问题
  • maven打包加速(转) (开启多线程,之前发现只占用一核CPU100%,其他CPU闲置的情况)...
  • Android Studio 入门级教程
  • lua中实现倒计时
  • 条款7:为多态基类声明virtual析构函数
  • Linux下rootkit后门检测工具chkrootkit
  • 人们应将公共云与私有云的辩论抛之脑后
  • 毕业两年的程序猿经验小结
  • JavaScript 如何正确处理 Unicode 编码问题!
  • download使用浅析
  • ES6简单总结(搭配简单的讲解和小案例)
  • extjs4学习之配置
  • Java,console输出实时的转向GUI textbox
  • SpiderData 2019年2月25日 DApp数据排行榜
  • spring boot 整合mybatis 无法输出sql的问题
  • SQLServer之创建显式事务
  • 对JS继承的一点思考
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 构建工具 - 收藏集 - 掘金
  • 力扣(LeetCode)21
  • 那些被忽略的 JavaScript 数组方法细节
  • 如何解决微信端直接跳WAP端
  • 携程小程序初体验
  • Java性能优化之JVM GC(垃圾回收机制)
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • #pragma multi_compile #pragma shader_feature
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (12)Hive调优——count distinct去重优化
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (BFS)hdoj2377-Bus Pass
  • (HAL库版)freeRTOS移植STMF103
  • (Python第六天)文件处理
  • (二)hibernate配置管理
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .NET Core 成都线下面基会拉开序幕
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET学习全景图
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • ?php echo ?,?php echo Hello world!;?
  • @Autowired和@Resource装配
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • []Telit UC864E 拨号上网