Spring Boot 学习笔记
参考:SpringBoot教程
Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring Boot特性如下:
- 创建独立Spring应用程序
- 嵌入式Tomcat,Jetty容器,无需部署WAR包
- 简化Maven及Gradle配置
- 尽可能的自动化配置Spring
- 直接植入产品环境下的实用功能,比如度量指标、健康检查及扩展配置等
- 无需代码生成及XML配置
一、简单的SpringBoot应用
1. 新建一个Maven项目
2. 配置pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sa.springboot</groupId> <artifactId>spring-boot-sample-helloworld</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 通过继承parent项目获得默认配置,包括默认使用Java 8,UTF-8编码;识别classpath下的application.properties和application.yml等 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.RELEASE</version> </parent> <!-- 预定义的一些Web开发的常用依赖,包括Tomcat、jackson和spring-webmvc等 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project>
3. 编写Controller
package com.sa.springboot.controller; import ... @RestController // @Restcontroller相当于@Controller(类的注释)和@ResponseBody(方法的注释)的结合,使方法以json格式输出 @EnableAutoConfiguration // same as @SpringBootApplication,@Configuration,@ComponentScan.它会根据你的pom配置来判断这是一个什么应用(如web应用),并创建相应的环境。 public class SampleController { @RequestMapping("/hello") String home() { return "Hello World!!"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); // 从main方法启动Spring应用的类,创建ApplicationContext实例且加载所有单例beans。 } }
4. 执行main方法,并使用浏览器访问http://localhost:8080/hello
单元测试:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
@RunWith(SpringRunner.class) @SpringBootTest public class SampleControllerTest { private MockMvc mvc; @Before public void setUp() throws Exception { mvc = MockMvcBuilders.standaloneSetup(new SampleController()).build(); } @Test public void getHello() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } }
开发环境的调试:springBoot对调试支持很好,修改之后可以实时生效,需要添加以下的配置:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<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>
二、支持JSP
springboot内部对jsp的支持并不是特别理想,其推荐的视图是Thymeleaf,但大多数java开发人员还是喜欢使用jsp。使用jsp的步骤如下:
1. 添加依赖
<!-- 对jsp的支持 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <!-- jsp对servlet容器的支持 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency> <!-- jsp中使用jstl标签的支持 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
2.