Spring Boot 学习与应用
- 特性
- 四大核心
- Spring Boot开发环境
- 项目创建注意
- pom.xml文件解说
- 热部署插件
- 注解
- 日志输出图标
- 核心配置文件
- 自定义配置文件
- 整合jsp
特性
- 能够快速创建基于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>热部署插件
插件为: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文件里 - @RestController
spring4 之后新增的注解,它可以写成@ResponseBody和@Controller两个,用于返回字符串或json数据
SpringApplication springApplication= new SpringApplication(Application.class);
springApplication.run(args);核心配置文件
配置文件有两种格式,一种是.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>
















