Spring Boot从入门到精通(一)搭建第一个Spring Boot程序
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

Spring Boot是基于Spring框架基础上推出的一个全新的框架, 旨在让开发者可以轻松地创建一个可独立运行的,生产级别的应用程序。基于Spring Boot内部的自动化配置功能,开发者可以在“零”配置, 或者只需要添加很少的配置,就可以进行日常的功能开发。
Spring Boot的特点
—
1)创建独立的Spring应用程序;
2)直接嵌入Tomcat,Jetty或Undertow,无需部署WAR文件;
3)提供推荐的基础POM文件(starter)来简化Apache Maven配置;
4)尽可能的根据项目依赖来自动配置Spring框架;
5)提供可以直接在生产环境中使用的功能,如性能指标,应用信息和应用健康检查;
6)开箱即用,没有代码生成,不需要配置过多的xml。同时也可以修改默认值来满足特定的需求。
7)其他大量的项目都是基于Spring Boot之上的,如Spring Cloud。
Spring Boot优缺点
—
优点
1)Spring Boot可以支持开发人员快速的开发出restful风格的微服务架构;
2)Spring Boot自动化确实方便,做微服务再合适不过了,单一jar包部署和管理都非常方便。只要系统架构设计合理,大型项目也能用,加上nginx负载均衡,轻松实现横向扩展;
3)Spring Boot要解决的问题, 精简配置是一方面, 另外一方面是如何方便的让spring生态圈和其他工具链整合(比如Redis,email,elasticsearch)。
优点
1)版本迭代速度更新太快,一些模块的改动很大;
2)由于无需配置或少量配置,报错时定位比较有难度;
3)网上现有资源的解决方案比较少见。
Spring Boot的核心功能
—
1)独立运行spring项目。Spring Boot以jar包的形式可以独立运行,使用java -jar xx.jar 就可以成功运行项目。
2)内嵌servlet容器。内嵌容器,使得我们可以执行运行项目的主程序main函数,使得项目可以快速运行。
3)提供starter简化Maven配置。Spring Boot提供了一系列的start pol用来简化maven依赖。如:常用的spring-boot-starter-web、spring-boot-starter-tomcat、spring-boot-starter-actuator等。
Spring Boot推荐基础POM文件
4)自动配置spring。Spring Boot会根据我们项目中类路径的jar包,为jar包的类进行自动装配bean。
5)应用监控。Spring Boot提供了基于HTTP、ssh、telnet对运行时的项目进行监控。
搭建第一个Spring Boot程序
—
环境准备
一个比较不错的文本编辑器(例如Vim、Emacs、Sublime Text)或者IDE(Eclipse、IntelliJ IDEA)
Java环境(JDK 1.8或以上版本)
Maven 3.0+IntelliJ IDEA(Eclipse和IntelliJ IDEA内置,如果使用IDE并且不使用命令行工具可以不安装)。
maven构建项目
1)官网地址:http://start.spring.io/
2)选择构建工具
Project(项目):Maven Project;
Language(语言):Java;
Spring Boot(版本):2.3.0M2;
Project Metadata(项目元数据):Group [com.yoodb]和Artifact[demo];
Dependencies(依赖关系):
[Name:springboot-study-demo01;
Description:Demo project for Spring Boot;
Package name:com.yoodb.study.demo01;
Package name:War;Java(JDK):8],可参考如图所示:


Spring Boot2.3.0.M2这一个里程碑的主要包括:改进Docker镜像支持;升级到 MongoDB 4(仍处于 beta 版);支持配置文件的通配符位置;众多依赖项升级。
3)点击“Generate-Crtl+”按钮下载项目压缩包;
4)解压后,使用IntelliJ IDEA,Project Settings -> + ,导入Maven项目后点击“OK”,如图所示:

5)选中右侧Maven菜单,执行install命令,等待执行完成,如图所示:


目录结构
Maven项目导入成功后,目录结构如下图所示:

Spring Boot的基础结构共三个文件:
src/main/java 程序开发以及主程序入口
src/main/resources 配置文件
src/test/java 测试程序
Spring boot官方建议的目录结果如下:
root package结构:com.example.yourproject
com
+- example
+- yourproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- controller
| +- CustomerController.java
|
1)Application.java 建议放到根目录下面,主要用于做一些框架配置;
2)domain目录主要用于实体(Entity)与数据访问层(Repository);
3)service 层主要是业务类代码;
4)controller 负责页面访问控制。
采用默认配置可以省去很多配置,当然也可以根据自己的喜欢来进行更改,到此一个Spring boot框架的Maven项目搭建完成。
Maven项目启动
编写controller类文件,代码如下所示:
package com.yoodb.study.demo01; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "关注微信公众号“Java精选”,Spring Boot系列文章持续更新中,带你从入门到精通,玩转Spring Boot框架。";
}
}
注:@RestController的含义是controller里面的方法都以json格式输出。
启动主程序,执行如图所示:

打开浏览器访问http://localhost:8080/hello,就可以看到效果了,是不是感觉很简单,那么大家赶紧试一试吧!欢迎关注微信公众号“Java精选”,持续更新Spring Boot系列文章,供大家参考和学习。
Spring Boot如何做单元测试?
—
打开的src/test/下的测试入口,编写简单的http请求来测试;使用mockmvc进行,利用MockMvcResultHandlers.print()打印出执行结果。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class HelloWorldControlerTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
}
另外,官方提供了一种比较新的注解测试方法,具体代码参考如下:
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloWorldControlerTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
}
Spring Boot开发环境的调试
—
热启动(热部署)在正常开发项目中已经很常见了,虽然平时开发web项目过程中,改动项目重启总是报错;但Spring Boot对调试支持很好,修改之后可以实时生效,需要添加以下的配置:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
注:该模块在完整的打包环境下运行的时候会被禁用。如果你使用java -jar启动应用或者用一个特定的classloader启动,它会认为这是一个“生产环境”。
转载自:https://blog.yoodb.com/yoodb/article/detail/1561
Spring Boot从入门到精通(一)搭建第一个Spring Boot程序的更多相关文章
- Spring Boot从入门到精通(九)整合Spring Data JPA应用框架
JPA是什么? JPA全称Java Persistence API,是Sun官方提出的Java持久化规范.是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. ...
- NHibernate从入门到精通系列(3)——第一个NHibernate应用程序
内容摘要 准备工作 开发流程 程序开发 一.准备工作 1.1开发环境 开发工具:VS2008以上,我使用的是VS2010 数据库:任意关系型数据库,我使用的是SQL Server 2005 Expre ...
- Spring Boot从入门到精通(二)配置GitHub并上传Maven项目
简单介绍一下GitHub,它是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库托管 ...
- Spring Boot从入门到精通(五)多数据源配置实现及源码分析
多数据源配置在项目软件中是比较常见的开发需求,Spring和Spring Boot中对此都有相应的解决方案可供大家参考.在Spring Boot中,如MyBatis.JdbcTemplate以及Jpa ...
- Spring Boot从入门到精通(六)集成Redis实现缓存机制
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言 ...
- Spring Boot从入门到精通(七)集成Redis实现Session共享
单点登录(SSO)是指在多个应用系统中,登录用户只需要登录验证一次就可以访问所有相互信任的应用系统,Redis Session共享是实现单点登录的一种方式.本文是通过Spring Boot框架集成Re ...
- Spring Boot从入门到精通(八)日志管理实现和配置信息分析
Spring Boot对日志的处理,与平时我们处理日志的方式完全一致,它为Java Util Logging.Log4J2和Logback提供了默认配置.对于每种日志都预先配置使用控制台输出和可选的文 ...
- Spring Cloud 从入门到精通
Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量. 本 ...
- MyBatis从入门到精通(第9章):Spring集成MyBatis(下)
MyBatis从入门到精通(第9章):Spring集成MyBatis(下) springmvc执行流程原理 mybatis-spring 可以帮助我们将MyBatis代码无缝整合到Spring中.使 ...
随机推荐
- 管道模式 pipe
先放一个图,预则立嘛
- 创建dynamics CRM client-side (三) - Execution Context
Execution Context 在代码执行的时候定义了event context. 当form或者grid发生event时候传递了execution context. 可以在event hand ...
- MySQL拼接字符串,GROUP_CONCAT 值得拥有
上一篇文章 跨表更新,看到自己写的SQL像个憨憨写了关于跨表个更新的内容.一年过的很快,文中后来的两位员工 馮大 和 馮二 也要面对无情的 KPI 考核了,他们工作干的很不错,performance ...
- 上线前一个小时,dubbo这个问题可把我折腾惨了
前因 那是一个月黑风高的夜晚,不管有没有圆圆的月亮,都无法解救要加班的我.这就是苦涩的人生啊! 那天正好是春节回家的日子,定了晚上的票,然后还是上线的日子. 测试在做回归测试的时候,发现一个老功能报错 ...
- TypeScript——基本类型
关于数据类型 原始类型 let bool: boolean = true; let num: number = 1; let str: string = 'i am string'; 引用类型 let ...
- Java并发专栏
1. Java并发 2. 守护线程与非守护线程 3. 为什么启动线程用start()而不用run()? 4. Java线程join方法总结 5. 生产者与消费者 6. wait.notify/noti ...
- spring4.2.4整合ehcache
最近工作中遇到个功能需要整合ehcache,由于spring版本用的是4.2.4,而在ehcache官网找到的集成配置文档是spring3.1的,因此配了几次都不成功,在历经一番波折后终于成功集成了s ...
- maven远程部署到tomcat8服务器
maven远程部署到tomcat8服务器 环境准备 linux服务器一台 服务器安装JDK 服务器安装Tomcat 服务器Tomcat8配置 添加Tomcat权限 配置文件路径: tomcat/con ...
- Oracle数据库、实例、用户、表空间、表之间的关系
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...
- RabbitMQ下载与安装
RabbitMQ下载与安装 先跟大家科普一下MQ和RabbitMQ MQ简介 MQ全称为Message Queue ,即消息队列 应用场景: 1.任务异步处理. 将不需要同步处理的并且耗时长的操作由消 ...