SpringBoot简介

    SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。使用spring boot可以非常方便、快速搭建项目。我们想使用任何东西,仅仅添加一个配置就可以,所以使用sping boot非常适合构建微服务。

 

一、SpringBoot特点

SpringBoot所具备的特征有:

  1. 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
  2. 内嵌Tomcat或Jetty等Servlet容器;
  3. 提供自动配置的“starter”项目对象模型(POMS)以简化maven配置;
  4. 尽可能自动配置Spring容器;
  5. 提供准备好的特性,如指标、健康检查和外部化配置;
  6. 绝对没有代码生成,不需要XML配置。

 

二、maven构建项目

(1)访问https://start.spring.io/

 SpringBoot简介_第1张图片

 (2)解压后,使用eclipse导入项目

SpringBoot简介_第2张图片

(3)选中解压后的项目

 

SpringBoot简介_第3张图片

(4)项目结构

SpringBoot简介_第4张图片

(5)Spring Boot的基础结构共三个文件:

  • src/main/java 程序开发以及主程序入口
  • src/main/resources 配置文件
  • src/test/java 测试程序

 

 

(6)springboot包结构

  1. Application.java 建议放到根目录下面,主要用于做一些框架配置
  2. domain目录主要用于实体(Entity)与数据访问层(Repository)
  3. service 层主要是业务类代码
  4. controller 负责页面访问控制

 

(7)执行SpringbootDemoApplication类启动项目

SpringBoot简介_第5张图片

 @SpringBootApplication : 是Spring Boot 项目的核心注解 主要目的是开启自动配置
 @SpringBootApplication注解是一个组合注解,主要组合了@Configuration .+@EnableAutoConfiguration.+@ComponentScan

 

(8)这样最基本的项目创建完成

SpringBoot简介_第6张图片

三、引入web模块

(1)pom.xml中添加支持web的模块:

 


		
			org.springframework.boot
			spring-boot-starter-web
		

			org.springframework.boot
			spring-boot-starter
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
			
				
					org.junit.vintage
					junit-vintage-engine
				
			
		

pom.xml文件中默认有两个模块:

  1. spring-boot-starter :核心模块,包括自动配置支持、日志和YAML。
  2. spring-boot-starter-test :测试模块,包括JUnit、Hamcrest、Mockito。

(2)编写Controller内容

@RestController
public class HelloWorldController {
	@RequestMapping("/hello")
	public String index() {
		return "Hello World";
	}
}

@RestController注解相当于@ResponseBody + @Controller合在一起的作用

@RestController:一般用于接口或前后端分离

    如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp,html页面,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是return 里的内容。

@Controller一般用于后台页面

    如果需要返回到指定页面,则需要用   @Controller  配合视图解析器   InternalResourceViewResolver   才行。

如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

(3)启动主程序

打开浏览器访问http://localhost:8080/hello,就可以访问了。

SpringBoot简介_第7张图片

(4)单元测试

 

    打开的src/test/下的测试入口,编写简单的http请求来测试;使用mockmvc进行,利用MockMvcResultHandlers.print()打印出执行结果。

 

package com.buba;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import com.buba.controller.HelloWorldController;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MockServletContext.class)
@WebAppConfiguration
public class HelloWorldControlerTests {
	private MockMvc mvc;

	@BeforeEach 
	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();

	}
}

运行结果

SpringBoot简介_第8张图片

@RunWith

  • @RunWith 就是一个运行器

  • @RunWith(JUnit4.class) 就是指用JUnit4来运行

  • @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境

  • @RunWith(Suite.class) 的话就是一套测试集合,

  • @ContextConfiguration Spring整合JUnit4测试时,使用注解引入多个配置文件

@SpringBootTest

    注解是SpringBoot Since:1.4.0 版本开始引入的一个用于测试的注解。classes属性指定启动类。

@WebAppConfiguration

    指定加载 ApplicationContext是一个WebApplicationContext,作用是模拟ServletContext,

@BeforeEach

在 JUnit 5 中,有4个注解你可能会用于如此工作: 

  • @BeforeAll 只执行一次,执行时机是在所有测试和 @BeforeEach 注解方法之前。 
  • @BeforeEach 在每个测试执行之前执行。 
  • @AfterEach 在每个测试执行之后执行。 
  • @AfterAll只执行一次,执行时机是在所有测试和 @AfterEach 注解方法之后。

 

(5)开发环境调试

    热启动在正常开发项目中已经很常见了,虽然平时开发web项目过程中,改动项目自动重启总是报错;但springBoot对调试支持很好,修改之后可以实时生效,需要添加以下的配置:

 


			
				org.springframework.boot
				spring-boot-devtools
				true
			



		
			
				org.springframework.boot
				spring-boot-maven-plugin
				
					true
				
			
		

    该模块在完整的打包环境下运行的时候会被禁用。如果你使用java -jar启动应用或者用一个特定的classloader启动,它会认为这是一个“生产环境”。

 如果本文对您有很大的帮助,还请点赞关注一下。

 

你可能感兴趣的:(SpringBoot,SpringBoot)