特性
- 能够快速创建基于spring的应用程序
- 能够直接使用 java main方法启动内嵌的Tomcat,Jetty服务器运行Spring Boot程序,不需要部署war包文件
- 提供约定的starter POM来简化Maven配置,让Maven的配置变得简单
- 根据项目的Maven依赖配置,Spring Boot自动配置Spring 、Spring MVC等
- 提供了程序的健康检查等功能
- 简化配置,基本可以完全不使用XML文件,采用注解配置
四大核心
- 自动配置:
针对很多Spring应用程序和常见的应用功能,Spring Boot能自动提供相关的配置 - 起步依赖:
告诉Spring Boot需要什么功能,它就能引入需要的依赖库 - Actuator(健康检查):
让你能够深入运行中的Spring Boot应用程序,可以查看Spring Boot程序的内部信息 - 命令行界面:
这是Spring Boot的可选特性,主要针对Groovy语言使用
Groovy语言是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多比较强大的特性,Groovy代码能够与Java代码很好的结合,也能用于扩展现有代码,Gorrvy也可以使用其它Java语言编写的库
Spring Boot开发环境
- 1.xxx的版本适用于Java6或7 , 2.xxx的版本要求最少是Java8
- 如果用Eclipse 推荐安装Spring Tool Suite(STS)插件
- Maven推荐使用3.0+
项目创建注意
pom.xml文件解说
- 如果创建Spring Boot项目,在pom.xml文件里要有个父级依赖
标注Spring Boot版本号
提供相关的Maven默认依赖,常用的jar包依赖可以省去version配置
如果不想使用spring boot提供的版本,可用version替换 - dependencies标签是项目的jar依赖
- properties标签是Maven属性配置
- build标签下
- plugins标签是配置插件的
会默认配置一个spring Boot项目编译打包插件,由spring boot提供<plugins> <!--SpringBoot项目编译打包插件--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!--编译插件--> <plugin> <artifactId>maven-compiler-plugin</artifactId> <!--插件版本--> <version>3.5.1</version> <!--编译级别--> <configuration> <source>1.8</source> <target>1.8</target> <!--编码格式--> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins>
- resources标签配置资源路径,解决资源文件找不到的问题
<resource> <directory>${basedir}/src/test/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.pdf</include> <include>**/*.yml</include> <include>**/*.tld</include> <include>**/*.ktr</include> <include>**/*.jar</include> <include>**/*.dll</include> <include>**/*.html</include> <include>**/*.png</include> </includes> </resource> <resource> <directory>${basedir}/src/main/resources</directory> </resource>
- plugins标签是配置插件的
热部署插件
插件为:spring-boot-devtools,
在pom.xml中加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
注解
- @SpringBootApplication是Spring Boot项目的核心注解,开启Spring自动配置,一般是放在Spring Boot项目入口的main方法所在的类上
SpringApplication.run(Application.class, args);此方法返回的是spring容器对象,可以写成
ApplicationContext context = SpringApplication.run(Application.class, args);
纯java项目时
- 可以用容器来获取业务类
- 也可以实现CommandLineRunner类中的run方法
- 可以用容器来获取业务类
日志输出图标
在启动入口处操作
- 关闭
SpringApplication springApplication= new SpringApplication(Application.class); //关闭logo日志的输出 springApplication.setBannerMode(Banner.Mode.OFF); springApplication.run(args);
- 修改输出图标
在resources放入一个banner.txt文件
logo日志图标生成网址
将生成的图标文字粘贴到banner.txt文件里SpringApplication springApplication= new SpringApplication(Application.class); springApplication.run(args);
- @RestController
spring4 之后新增的注解,它可以写成@ResponseBody和@Controller两个,用于返回字符串或json数据
核心配置文件
配置文件有两种格式,一种是.properties文件(键值对的配置方式), 一种是.yml文件(yaml格式,采用一定的空格、换行等格式排版进行配置,值与前面的冒号配置项必须要有一个空格)
如果两种格式的文件都存在,则优先读取.properties文件
-
.properties文件
#激活dev配置文件(文件名application-dev.properties) spring.profiles.active=dev #启动的服务器端口 server.port=8080 #配置项目访问的上下文根路径 http://localhost:8080/project server.servlet.context-path=/project #引入redis配置文件 spring.profiles.include=redis
-
.yml文件
server: port: 9090 servlet: context-path: /project spring: profiles: active: dev
自定义配置文件
在核心配置文件中自定义配置,采用以下方式读取属性值:
-
@Value
用于逐个读取自定义的配置(在实体类的属性上加上相应的注解,在类上加入读取指定的配置文件@PropertySource(value = “classpath:email.properties”);如果是在激活的配置文件中读取,直接用占位符即可)@Value("${mail_host}") private String mailHost;
-
@ConfigurationProperties
用于将整个文件映射成一个对象
dev.properties文件自定义内容email.host=app-smtp-exchange-test.hk.hsbc:25
/** *prefix是配置文件中属性的前缀 */ @Component @ConfigurationProperties(prefix="email") public class ProrertiesValue{ private String host; public String getHost(){ return host; } public void setHost(String host){ this.host=host; } }
整合jsp
- 需要在application.properties配置文件中配置mvc的jsp视图展示
#前缀
spring.mvc.view.prefix=/
#后缀
spring.mvc.view.suffix=.jsp
- 在pom.xml文件中的build加上资源路径
<resources> <resource> <directory>${basedir}/src/test/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.pdf</include> <include>**/*.yml</include> <include>**/*.tld</include> <include>**/*.ktr</include> <include>**/*.jar</include> <include>**/*.dll</include> <include>**/*.html</include> <include>**/*.png</include> </includes> </resource> <resource> <directory>${basedir}/src/main/resources</directory> </resource> </resources>