Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
1. SpringBoot并不是对Spring功能上的增强,而是提供了一种快速创建独立的Spring应用程序的框架
2. 嵌入的Tomcat,无需部署WAR文件
3. 简化Maven配置
4. 自动配置Spring
5. 绝对没有代码生成和对XML没有要求配置
6.备受关注,是下一代框架,已经是不争的事实,不需要学习springmvc
7.微服务的入门级微框架,springboot是springcloud的基础
方案一:通过Spring官网进行项目构建,然后下载到本地,导入到IDE当中 http://start.spring.io/
方案二:通过IDE编译器创建一个SpringBoot工程
方案三:创建普通的Maven工程,然后导入SpringBoot依赖
<!--导入SpringBoot依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<dependency>
<!-- spring-boot-starter-web是为我们提供了包括mvc,aop等需要的一些jar -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 因为我们已经配置了 parent 中的version 所以这里不需要指定version了 -->
</dependency>
@RestController |
@SpringBootApplication |
问题:启动类需要注意其位置,默认只能扫描它所在包下的所有注解,启动类默认通过@ComponentScan扫描当前启动类所在包下的所有注解。如果其他的包和启动类不在一层的情况下,是默认扫描不到的,可以通过@ComponentScan("com.wdksoft")扫描指定的包,一般情况下都会将启动类放在与其他包相同目录的一层当中,但是启动类不能使用默认包Default
SpringBoot一般是一各普通的MavaenJava工程,如果涉及到静态资源则需要将静态资源放在resources配置目录下,与以往操作不同,静态资源需要在resources目录下创建static文件夹或者public文件夹,将静态资源放到static或者public当中,根据层级目录进行访问,但是不需要加static目录或者pulbic目录
利用Contrller做资源定向: @Controller @RequestMapping("/resources") public class ResourcesContrller {
@RequestMapping("/getResource") public String getResource(){ return "/html/index.html"; } } |
4.1 局部(在controller内部)
/** * 局部异常处理 * @param ex * @return */ @ExceptionHandler(RuntimeException.class) @ResponseBody public String exceptionHandler(Exception ex){ if(ex instanceof ArithmeticException){ return "服务器内部错误~"; } return "发生错误,请稍后重试~"; } |
4.2 全局1
@ControllerAdvice //利用AOP思想增强每一个Controller public class MyException { /** * 局部异常处理 * @param ex * @return */ @ExceptionHandler(RuntimeException.class) @ResponseBody public String exceptionHandler(Exception ex){ if(ex instanceof ArithmeticException){ return "服务器内部错误~"; } return "发生错误,请稍后重试~"; } } |
全局2
@ControllerAdvice |
IDEA实现热部署:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
/configuration>
</plugin>
File---->Settings---->Build,Execution,.....---->Compiler
将Build Project automatically勾选上
从列表中找到compiler.automake.allow.when.app.running将其勾选
<!-- 配置servlet需要的依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency> <!-- 配置jstl标签库需要的依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!-- 添加tomcat的支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> |
第一种形式:application.properties
server.port=8081
第二种形式:application.yml 格式要求非常严格(阶梯式)
server
port: 8081
第三种:bootstrap.properties,bootstrap.yml
bootstrap和application区别:
Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap, 另外一种是 application, bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。
bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。bootstrap 里面的属性会优先加载,
它们默认也不能被本地相同配置覆盖。
创建SpringBoot配置文件:
application.properties
##配置视图解析器 |
@Controller |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
@SpringBootApplication |
注意问题:启动类所启动的工程如果是父子工程的情况下,默认找父工程,但是内容写入到了子工程,这时就需要让启动类将当前子工程作为工作目录,找到
Working dirctory选择$model......
use classpath of model 选择当前工程即可
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> |
首先在resources下创建一个templates文件夹,在该文件夹下创建一个html文件,将html后缀改为ftl即可,在模板中可以采用${xxx}进行取值
<!DOCTYPE html> |
## Freemarker 配置 |
@Controller |
博客:
https://www.cnblogs.com/jingwhale/p/4644566.html
https://www.cnblogs.com/xiufengchen/p/10404872.html
概念:
动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。
这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,
所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
<!-- 添加thymeleaf模版的依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> |
<!DOCTYPE html> |
##配置thymeleaf |
@Controller |
博客:https://www.cnblogs.com/msi-chen/p/10974009.html
原文:https://www.cnblogs.com/zhaoyun01/p/12621349.html