Spring Boot快速入门
简介
在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让你更易上手,更简单快捷地构建Spring应用!
Spring Boot让我们的Spring应用变的更轻量化。比如:你可以仅仅依靠一个Java类来运行一个Spring引用。你也可以打包你的应用为jar并通过使用java -jar来运行你的Spring Web应用。
Spring Boot的主要优点:
为所有Spring开发者更快的入门
开箱即用,提供各种默认配置来简化项目配置
内嵌式容器简化Web项目
没有冗余代码生成和XML配置的要求
快速入门
本章主要目标完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理,通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。
系统要求:
Java 7及以上
Spring Framework 4.1.5及以上
本文采用Java 1.8.0_73
、Spring Boot 1.3.2
调试通过。
使用Maven构建项目
通过
SPRING INITIALIZR
工具产生基础项目访问:
http://start.spring.io/
选择构建工具
Maven Project
、Spring Boot版本1.3.2
以及一些工程基本信息,可参考下图所示
SPRING INITIALIZR
点击
Generate Project
下载项目压缩包解压项目包,并用IDE以
Maven
项目导入,以IntelliJ IDEA 14
为例:菜单中选择
File
–>New
–>Project from Existing Sources...
选择解压后的项目文件夹,点击
OK
点击
Import project from external model
并选择Maven
,点击Next
到底为止。若你的环境有多个版本的JDK,注意到选择
Java SDK
的时候请选择Java 7
以上的版本
项目结构解析
项目结构
通过上面步骤完成了基础项目的创建,如上图所示,Spring Boot的基础结构共三个文件(具体路径根据用户生成项目时填写的Group所有差异):
src/main/java
下的程序入口:Chapter1Application
src/main/resources
下的配置文件:application.properties
src/test/
下的测试入口:Chapter1ApplicationTests
生成的Chapter1Application
和Chapter1ApplicationTests
类都可以直接运行来启动当前创建的项目,由于目前该项目未配合任何数据访问或Web模块,程序会在加载完Spring之后结束运行。
引入Web模块
当前的pom.xml
内容如下,仅引入了两个模块:
spring-boot-starter
:核心模块,包括自动配置支持、日志和YAMLspring-boot-starter-test
:测试模块,包括JUnit、Hamcrest、Mockito
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency></dependencies>
引入Web模块,需添加spring-boot-starter-web
模块:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>
编写HelloWorld服务
创建
package
命名为com.didispace.web
(根据实际情况修改)创建
HelloController
类,内容如下
@RestControllerpublic class HelloController { @RequestMapping("/hello") public String index() { return "Hello World"; } }
启动主程序,打开浏览器访问
http://localhost:8080/hello
,可以看到页面输出Hello World
编写单元测试用例
打开的src/test/
下的测试入口Chapter1ApplicationTests
类。下面编写一个简单的单元测试来模拟http请求,具体如下:
@RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(classes = MockServletContext.class)@WebAppConfigurationpublic class Chapter1ApplicationTests { private MockMvc mvc; @Before public void setUp() throws Exception { mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build(); } @Test public void getHello() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().string(equalTo("Hello World"))); } }
使用MockServletContext
来构建一个空的WebApplicationContext
,这样我们创建的HelloController
就可以在@Before
函数中创建并传递到MockMvcBuilders.standaloneSetup()
函数中。
注意引入下面内容,让
status
、content
、equalTo
函数可用
import static org.hamcrest.Matchers.equalTo;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
至此已完成目标,通过Maven构建了一个空白Spring Boot项目,再通过引入web模块实现了一个简单的请求处理。
转自:https://my.oschina.net/u/2246951/blog/805515
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微服务解决方案 Apache ServiceComb(incubating) 发布新版本
近期,微服务解决方案Apache ServiceComb(incubating) 捷报频传,除了LC3大会ServiceComb Workshop成功举办之外,Java-Chassis 1.0.0-m2、Service-Center 1.0.0-m2和Saga 0.2.0版本顺利通过投票,完成发版。 版本变更概览 Java-Chassis 服务间通讯提供文件流传输能力,支持音乐、图片等多媒体场景。 在服务级别QPS控制基础上,新增支持API级别QPS控制 增加脚手架和start.servicecomb.io,支持用户快速构建工程,提供完整的开箱即用能力 新增支持使用Gradle构建 异步编程模型支持CompletableFuture和AsycRestTemplate 扩展Swagger支持类循环依赖,允许服务调用时的出入参数中存在类循环依赖场景 支持使用hibernate注解进行参数校验 新增支持Http2协议 实现错误注入接口,允许通过拦截服务请求构造异常场景 新增服务Dev运行模式,开启Dev模式时,支持契约动态修改 实现优雅停机,关闭服务时进行反注册,确保完成已接受请求并完整释放...
- 下一篇
分布式开放消息系统(RocketMQ)的原理与实践
备注:1.如果您此前未接触过RocketMQ,请先阅读附录部分,以便了解RocketMQ的整体架构和相关术语2.文中的MQServer与Broker表示同一概念 分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的? 关键特性以及其实现原理 一、顺序消息 消息有序指的是一类消息消费时,能按照发送的顺序来消费。例如:一个订单产生了 3 条消息,分别是订单创建、订单付款、订单完成。消费时,要按照这个顺序消费才有意义。但同时订单之间又是可以并行消费的。 假如生产者产生了2条消息:M1、M2,要保证这两条消息的顺序,应该怎样做?你脑中想到的可能是这样: 你可能会采用这种方式保证消息顺序 M1发送到S1后,M2发送到S2,如果要保证M1先于M2被消费,那么需要M1到达消费端后,通知S2,然后S2再将M2发送到消费端。 这个模型存在的问题是,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题