Spring Boot入门(一)初识
Spring与SpringBoot
SpringBoot是整合Spring技术栈的一站式框架
SpringBoot是简化Spring技术栈的快速开发脚手架
Spring 能做什么

Spring的生态
https://spring.io/projects/spring-boot
覆盖了:web开发、数据访问、安全控制、分布式、消息服务、移动开发、批处理......
Spring Boot简介
Spring Boot 是 Pivotal 团队在 Spring 的基础上提供的一套全新的开源框架,其目的是为了简化 Spring 应用的搭建和开发过程。Spring Boot 去除了大量的 XML 配置文件,简化了复杂的依赖管理。
Spring Boot 具有 Spring 一切优秀特性,Spring 能做的事,Spring Boot 都可以做,而且使用更加简单,功能更加丰富,性能更加稳定而健壮。随着近些年来微服务技术的流行,Spring Boot 也成了时下炙手可热的技术。
Spring Boot 集成了大量常用的第三方库配置,Spring Boot 应用中这些第三方库几乎可以是零配置的开箱即用(out-of-the-box),大部分的 Spring Boot 应用都只需要非常少量的配置代码(基于 Java 的配置),开发者能够更加专注于业务逻辑。
Spring Boot 是什么
众所周知 Spring 应用需要进行大量的配置,各种 XML 配置和注解配置让人眼花缭乱,且极容易出错,因此 Spring 一度被称为“配置地狱”。
为了简化 Spring 应用的搭建和开发过程,Pivotal 团队在Spring基础上提供了一套全新的开源的框架,它就是 Spring Boot。
Spring Boot 具有 Spring 一切优秀特性,Spring 能做的事,Spring Boot都可以做,而且使用更加简单,功能更加丰富,性能更加稳定而健壮。随着近些年来微服务技术的流行,Spring Boot 也成为了时下炙手可热的技术。
Spring Boot 提供了大量开箱即用(out-of-the-box)的依赖模块,例如 spring-boot-starter-redis、spring-boot-starter-data-mongodb 和 spring-boot-starter-data-elasticsearch 等。这些依赖模块为 Spring Boot 应用提供了大量的自动配置,使得 Spring Boot 应用只需要非常少量的配置甚至零配置,便可以运行起来,让开发人员从 Spring 的“配置地狱”中解放出来,有更多的精力专注于业务逻辑的开发。
Spring Boot 的特点
Spring Boot 具有以下特点:
1. 独立运行的 Spring 项目
Spring Boot 可以以jar包的形式独立运行,Spring Boot 项目只需通过命令 java–jar xx.jar 即可运行。
2. 内嵌 Servlet 容器
Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。
3. 提供 starter 简化Maven 配置
Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。
4. 提供了大量的自动配置
Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。
5. 自带应用监控
Spring Boot 可以对正在运行的项目提供监控。
6. 无代码生成和 xml 配置
Spring Boot 不需要任何 xml配置即可实现 Spring 的所有配置。
SpringBoot2快速入门
- 
系统要求 - Java 8 & 兼容java14.
- Maven 3.3+
- idea 2019.1.2
 如果你还没配置环境变量请查看:java环境变量配置 关于 Lombok的介绍:Lombok介绍、使用方法和总结 - 猿人谷 - 博客园 (cnblogs.com)
- Java 8 & 兼容
- 
选择构建工具 Maven Project、Java、Spring Boot 版本 2.6.2 以及一些工程基本信息,可参考下图所示: 
  
- 
点击 GENERATE 下载项目压缩包 
- 
解压后,使用 Idea 导入项目,File -> New -> Model from Existing Source.. -> 选择解压后的文件夹 -> OK,选择 Maven 一路 Next,OK done! 
项目结构介绍

如上图所示,Spring Boot 的基础结构共三个文件:
- src/main/java程序开发以及主程序入口
- src/main/resources配置文件
- src/test/java测试程序
另外, Spring Boot 建议的目录结果如下:
root package 结构:com.example.myproject
com
  +- example
    +- myproject
      +- Application.java
      |
      +- model
      |  +- Customer.java
      |  +- CustomerRepository.java
      |
      +- service
      |  +- CustomerService.java
      |
      +- controller
      |  +- CustomerController.java
      |
- 1、Application.java建议放到根目录下面,主要用于做一些框架配置
- 2、model 目录主要用于实体与数据访问层(Repository)
- 3、service 层主要是业务类代码
- 4、controller 负责页面访问控制
采用默认配置可以省去很多配置,当然也可以根据自己的喜欢来进行更改
最后,启动 Application main 方法,至此一个 Java 项目搭建好了!
引入web模块
- 
pom.xml中添加支持web的模块: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>pom.xml 文件中默认有两个模块: - spring-boot-starter:核心模块,包括自动配置支持、日志和 YAML,如果引入了- spring-boot-starter-webweb 模块可以去掉此配置,因为- spring-boot-starter-web自动依赖了- spring-boot-starter。
- spring-boot-starter-test:测试模块,包括 JUnit、Hamcrest、Mockito。
 
- 
编写 Controller 内容 @RestController public class HelloWorldController { @RequestMapping("/hello") public String index() { return "Hello World"; } }@RestController的意思就是 Controller 里面的方法都以 json 格式输出,不用再写什么 jackjson 配置的了!
- 
启动主程序,打开浏览器访问 http://localhost:8080/hello,就可以看到效果了
单元测试
打开的src/test/下的测试入口,编写简单的 http 请求来测试;使用 mockmvc 进行,利用MockMvcResultHandlers.print()打印出执行结果。
package com.example.demo;
import com.example.demo.controller.HelloWorldController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloTests {
    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(status().isOk())
                .andExpect(MockMvcResultMatchers.content().string("Hello World"));
    }
}
- 
@RunWith(SpringRunner.class)JUnit运行使用Spring的测试支持。SpringRunner是SpringJUnit4ClassRunner的新名字,这样做的目的 
 仅仅是为了让名字看起来更简单一点。
- 
@SpringBootTest该注解为SpringApplication创建上下文并支持Spring Boot特性,其 webEnvironment提供如下配置:Mock-加载WebApplicationContext并提供Mock Servlet环境,嵌入的Servlet容器不会被启动。RANDOM_PORT-加载一个EmbeddedWebApplicationContext并提供一个真实的servlet环境。嵌入的Servlet容器将被启动并在一个随机端口上监听。DEFINED_PORT-加载一个EmbeddedWebApplicationContext并提供一个真实的servlet环境。嵌入的Servlet容器将被启动并在一个默认的端口上监听
 (application.properties配置端口或者默认端口8080)。NONE-使用SpringApplication加载一个ApplicationContext,但是不提供任何的servlet环境。
开发环境的调试
热启动在正常开发项目中已经很常见了吧,虽然平时开发web项目过程中,改动项目启重启总是报错;但springBoot对调试支持很好,修改之后可以实时生效,需要添加以下的配置:
 <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 启动,它会认为这是一个“生产环境”。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号