SpringBoot实践(三)——整合SSM细节
前言
本篇笔记记录SpringBoot整合SSM的一些细节,包括项目启动、SpringMVC的视图解析器等(本篇笔记以JSP为例,后续会说明基于HTML以及基于JSP再次封装的前端驱动引擎Thymleaf)。
文章目录
SpringBoot架构细节
Java规范类(Bean类)
Java规范类,我们一般称之为JavaBean,JavaBean有以下几个要求,直接上代码:
public class Demo{
// 成员变量
private String text;
// 无参构造器
public Demo(){···}
// 有参构造器
public Demo(String text){
this text = text;
}
// 属性
public void setText(String text){
this.text = text;
}
public String getText(){
return text;
}
}
JavaBean规范中包含着Java语言的三大基本特性,在后续使用各种框架的时候,所有实体类都要遵循JavaBean的规范。
【注】:成员变量和属性不一样,大家可以去CSDN查看一下,在此不做赘述。
生成JavaBean的工具
每次在书写实体类的时候,都需要书写大量的代码,如果可以自动生成的话我们可以省下很多事(其实有的,就是自定义快捷键,这玩意现在配也可以,自己找一个博客去就好),在这里我们可以引入一个依赖,来根据我们书写的成员变量通过注解的方式来帮助我们生成对应的属性和构造器,具体依赖如下:
<!--小辣椒-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
该依赖具体使用如下:
// 生成无参构造器
@NoArgsConstructor
// 生成有参构造器
@AllArgsConstructor
// 生成字段属性
@Getter
@Setter
// 生成对象对比方法
@EqualsAndHashCode
// 生成对象输出序列
@ToString
public class Demo {
private String sid;
private String sname;
}
/*
上述注解中属性可以通过@Data注解来生成,其中@Data中包括:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
这样我们可以将上述注解可以省略为如下代码:
*/
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
/*
@Data 注解中包含无参构造器,并没有生成有参构造器,如果我们手动生成有参构造器的话会覆盖自动生成的无参构造器,所以我们应该成对书写构造器注解
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Demo {
private String sid;
private String sname;
}
SpringBoot属性注入
在此仅说明SpringBoot架构中常用的属性注入方式,且会说明开发时的恶属性注入方式。
注解
在对属性
注入的时候,分为自定义类型和基本类型以及引用类型(在此基本类型和引用类型可以放在一起引入),我们先来说明一下基本类型以及引用类型的注解:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Demo {
@Value("1001")
private String sid;
@Value("xxx")
private String sname;
}
配置文件
在配置文件中可以书写我们想要注入的属性的值,所谓的配置文件其实就是我们的appliaction.yml
,具体写法如下所示:
# 基本类型和引用类型数据书写
sid: 1001
sname: xxx
## 日期
date: yyyy/mm/dd HH:MM:ss
## 数组
array: a,b,c
# 复杂类型数据书写
## List集合
lists: aaa,bbb,ccc
## Map 集合
maps: "{'aa':'aa','bb':'bb'}"
# 自定义数据类型
student:
sid: 1002
sname: yyy
接下来说明如何通过注解将文件中的属性值注入,
- 普通变量注入:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Demo {
@Value("${sid}")
private String sid;
@Value("${sname}")
private String sname;
}
- 对象的成员变量注入:
# 自定义数据类型
student:
sid: 1002
sname: yyy
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
@Data
@NoArgsConstructor
@AllArgsConstructor
// 对于配置文件中按照级联方式定义的属性,我们可以通过该注解来将其直接注入,该注解可以对应字段来为其匹配注入
@ConfigurationProperties(prefix="student")
public class Demo {
private String sid;
private String sname;
}
**【注】:**在使用对对象整体注入的时候,我们会发现配置文件中书写属性值没有提示,这个时候我们为了方便配置文件中书写,可以引入以下依赖:
<!--属性注入依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
这个配置依赖需要重启项目才可以生效。
server:
port: 8081
servlet:
context-path: /springboot-jsp
# 修改jsp不用重启
jsp:
# jsp的初始化参数行为
init-parameters:
development: true
Jsp修改自动部署
IDEA中使用SpringBoot中Jsp页面在修改后并不会自动修改浏览器的显示,必须重启项目才可以显示修改结果,不太方便。我们可以添加配置来实现该功能。
server:
servlet:
# 修改jsp不用重启
jsp:
# jsp的初始化参数行为
init-parameters:
development: true
SpringMVC 视图解析器
spring:
mvc:
view:
prefix: /
suffix: .jsp
添加Jsp页面模板
和之前添加MyBatis映射文件模板的步骤一样,在此不过赘述,模板文件放在下面,大家自取:
<%@page pageEncoding="UTF-8" contentType="text/html; UTF-8" isELIgnored="false" %>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>This is the first Jsp page</h1>
</body>
</html>
总结
本篇笔记中记录了SpringBoot整合SSM相关的一些小细节,大家可以自行配置。