初识Spring Boot框架
小伙伴们在学习的过程中大概也发现了这两个框架需要我们手动配置的地方非常多,不过做JavaEE开发的小伙伴们肯定也听说过“约定大于配置”这样一句话,就是说系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置,可是使用Spring或者SpringMVC的话依然有许多这样的东西需要我们进行配置,这样不仅徒增工作量而且在跨平台部署时容易出问题。OK,由于这些已经存在的问题,Spring Boot应运而生,使用Spring Boot可以让我们快速创建一个基于Spring的项目,而让这个Spring项目跑起来我们只需要很少的配置就可以了。Spring Boot主要有如下核心功能:
1.独立运行的Spring项目
Spring Boot可以以jar包的形式来运行,运行一个Spring Boot项目我们只需要通过java -jar xx.jar类运行。非常方便。
2.内嵌Servlet容器
Spring Boot可以内嵌Tomcat,这样我们无需以war包的形式部署项目。
3.提供starter简化Maven配置
使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的,这里Spring Boot 通过starter能够帮助我们简化Maven配置。
4.自动配置Spring
5.准生产的应用监控
6.无代码生成和xml配置
OK,关于SpringBoot更详细的优缺点小伙伴们也可以自行搜索,我这里不再罗列,我们还是来看看代码。
项目创建
初次接触,我们先来看看如何创建一个Spring Boot项目,这里以IntelliJ IDEA为例,其他的IDE工具小伙伴们自行搜索创建方式:
首先创建一个项目,创建时选择Spring Initializr,然后Next,如下图:
一切默认
@RestController
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
String index(){
return "Hello Spring Boot!";
}
}
启动成功之后我们就可以直接在浏览器中访问了,如下:
常规属性配置
在前面的博客( Spring常用配置 )中我们介绍了如何在使用Spring容器框架**入properties文件里的值。如果我们使用了Spring Boot,这项工作将会变得更加简单,我们只需要在application.properties中定义属性,然后在代码中直接使用@Value注入即可。
如下:
book.author=罗贯中
book.name=三国演义
book.pinyin=sanguoyanyi
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true spring.messages.encoding=UTF-8
然后 在IntelliJ IDEA中依次点击File -> Settings -> Editor -> File Encodings
将Properties Files (*.properties)下的Default encoding for properties files设置为UTF-8,将Transparent native-to-ascii conversion前的勾选上。(参考【Springboot 之 解决IDEA读取properties配置文件的中文乱码问题】【Springboot 之 解决IDEA读取properties配置文件的中文乱码问题】)。
然后在变量中通过@Value直接注入就行了,如下:
@Value(value = "${book.author}")
private String bookAuthor;
@Value("${book.name}")
private String bookName;
@Value("${book.pinyin}")
private String bookPinYin;
修改index方法,使之返回这些值:
@RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
String index(){
return "Hello Spring Boot! The BookName is "+bookName+";and Book Author is "+bookAuthor+";and Book PinYin is "+bookPinYin;
}
然后在浏览器中访问,结果如下:
类型安全的配置
刚刚说的这种方式我们在实际项目中使用的时候工作量略大,因为每个项目要注入的变量的值太多了,这种时候我们可以使用基于类型安全的配置方式,就是将properties属性和一个Bean关联在一起,这样使用起来会更加方便。我么来看看这种方式怎么实现。
1.在src/main/resources文件夹下创建文件夹config,config文件夹中创建文件book.properties
文件内容如下:
- book.name=红楼梦
- book.author=曹雪芹
- book.price=28
2.创建Book Bean,并注入properties文件中的值
代码如下:
@Component
@PropertySource("classpath:config/book.properties")
@ConfigurationProperties(prefix = "book")
public class BookBean {
private String name;
private String author;
private String price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
在Controller中添加如下代码注入Bean:
@Autowired
private BookBean bookBean;
添加路径映射:
@RequestMapping("/book")
public String book() {
return "Hello Spring Boot! The BookName is "+bookBean.getName()+";and Book Author is "+bookBean.getAuthor()+";and Book price is "+bookBean.getPrice();
}
运行效果如下:
日志配置
默认情况下Spring Boot使用Logback作为日志框架,也就是我们前面几篇博客中用到的打印日志方式,当然如果有需要我们可以手动配置日志级别以及日志输出位置,相比于我们在Spring容器中写的日志输出代码,这里的配置简直就是小儿科了,只需要在application.properties中添加如下代码:
logging.file=/home/sang/workspace/log.log
logging.level.org.springframework.web=debu
上面表示配置日志输出位置,下面配置日志级别。
推荐阅读
-
Spring框架学习-Spring和IOC概述
-
Spring Boot 入门(五):集成 AOP 进行日志管理
-
Mybaits 源码解析 (十)----- 全网最详细,没有之一:Spring-Mybatis框架使用与源码解析
-
手把手教你定制标准Spring Boot starter,真的很清晰
-
spring boot 枚举使用的坑整理
-
Spring Boot Security 入门—内存用户验证
-
Spring Boot2 系列教程 (二) | 第一个 SpringBoot 工程详解
-
拒绝黑盒应用-Spring Boot 应用可视化监控
-
Spring Boot入门(一):搭建Spring Boot项目
-
Spring Boot2.3 新特性分层JAR的使用