SpringBoot
SpringBoot
1、回顾Spring
-
spring是为了解决企业级应用开发的复杂性创建的,简化开发
-
基于POJO轻量级
-
通过IOC,依赖注入(DI),面向接口
-
基于AOP(切面)和惯例进行声明式编程
2、什么是SpringBoot
-
一个javaweb开发框架,和springMVC类似
-
约定大于配置
-
javaEE---》j2EE---》spring---》springBoot
-
集成第三方库配置
微服务架构:业务service---》模块
3、第一个springboot程序
-
jdk 21
-
mysql 5.7.19
-
maven 3.9.9
-
springboot 3.4.4
-
IDEA
官方:提供了一个快速生成网站。
-
可以官网直接下载,导入
-
可以直接使用IDEA创建一个springboot项目(一般,开发直接IDEA创建)
-
Idea创建springboot项目,勾选springweb,创建项目后删掉多余的文件
![]()
-
在yang下新建controller层,新建HelloController类
@RestController
@RequestMapping("/Hello")
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello!";
}
}
- 更改项目端口号,在application.properties文件添加
#更改项目端口号
server.port=8082
访问网址:http://localhost:8082/Hello/hello
- 修改banner.txt(玩一玩),网址:关于人物的ascii艺术字,自定义Spring Boot 人物 banner下载,各种有意思的banner、ascii图案,还有中文文字banner,作为Spring Boot和终端命令行banner会让项目更有意思。-bootschool.net
4、springboot自动装配原理
pom.xml:
-
spring-boot-dependencies:核心依赖在父工程中
-
我们写或者引入springboot依赖的时候,不需要指定版本,有版本仓库
启动器:
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> -
启动器是springboot的启动场景
-
比如:spring-boot-starter-web ,会帮我们自动导入web环境的所有依赖!
-
springboot会将所有功能场景,变成一个个启动器
-
我们要使用什么功能,只要找到对应启动器就欧克了
start
主程序:
@SpringBootApplication//标注这个类是springboot应用
public class Springboot01DemoApplication {
public static void main(String[] args) {
//将springboot应用启动
SpringApplication.run(Springboot01DemoApplication.class, args);
}
}
注解:
总结:
5、yaml 以及springboot配置
5.1、yaml基本语法
-
application.yaml 语法结构:key:空格value
-
作用:修改springboot自动配置默认值
-
对空格要求十分高!!!!!
#普通的key-value
name: yangshi
#对象
student:
name: yangshi
id: 12
student1: {name: yangshi,id: 3}
#数组
pets:
- cat
- dog
- pig
pets1: [cat,dog,pig]
5.2、给属性赋值几种方式
- 原生的
@Value("maomao")
private String name;
@Value("2")
private Integer age;
- yaml可以给实体类赋值
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
//Person{name='yangshi',
// age=12,
// happy=true,
// birth=Fri Dec 12 00:00:00 CST 2025,
// maps={k1=v1, k2=v2},
// lists=[code, music, girl],
// dog=Dog{name='maomao', age=2}}
person:
name: yangshi
age: 12
happy: true
birth: 2025/12/12
maps: {k1: v1,k2: v2}
lists: [code,music,girl]
dog:
name: maomao
age: 2
@ConfigurationProperties(prefix = "person"):
将springboot的Person类所有属性和配置文件中person下属性一一对应!!
- properties文件赋值
yaml 代码步骤:
-
导入处理器
-
编写配置文件
-
绑定
-
测试
松散绑定:
yaml里面写last_name,和类里面写lastName效果一致,可以绑定!!!
总结:
-
只需要某一个值,可以用@value
-
专门编写一个javaBean和配置文件映射,直接使用@ConfigurationProperties!!!!
JSR303校验:
可看源码,可看百度,还可以自定义数据校验规则
配置文件位置:
有四个位置:优先级为项目目录下的config目录下 > 项目目录下 > resources目录下config目录下 > resources目录下

多环境下切换:
-
properties文件
-
yaml文件
# application.yaml(默认配置) server: port: 8080 spring: config: activate: on-profile: dev --- # dev 环境配置 spring: config: activate: on-profile: dev server: port: 8081 --- # prod 环境配置 spring: config: activate: on-profile: prod server: port: 8082
自动配置原理再理解:
6、springboot web开发
springboot帮我们配置了什么?能不能修改?能修改什么?能不能扩展?
-
xxxxxAutoConfiguration...向容器自动配置组件
-
xxxxxxProperties:自动装配类,装配配置文件中自定义内容
要解决问题:
-
导入静态资源
-
首页
-
jsp,模板引擎Thymeleaf
-
装配扩展SpringMvc
-
增删查改
-
拦截器
-
国际化
开发:
-
创建springboot项目,勾选web,删除多余文件
-
创建controller层,编写HelloController类测试一下环境能不能跑起来,然后再继续编写代码
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello!";
}
}
6.1、处理静态资源方式
看源码,理解源码
- webjars
官网:WebJars - Web Libraries in Jars
导入maven依赖;根据源码输入网址;
- resources目录下创建public目录,resources目录,static目录;
优先级:resources > static(默认) >public
映射地址:localhost:xxxx/

直接访问 http://localhost:8082/1.js 可以读取文件资源
6.2、首页和图标定制
index.html (首页),favicon.ico(图标即图片)可以放在resources目录下的public目录,resources目录,static目录,templates目录下;
6.3、模板引擎
thymeleaf:
- 导入依赖 thymeleaf
-
官网:
-
github:
-
spring官方文档:
导依赖失败,注意创建项目的时候一定要看项目settings,选择自定义本地仓库了没有
导依赖:
<!--Tymeleaf 我们都是基于3.x开发的-->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring6</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
thymeleaf-extras-java8time 不是 Spring Boot 官方管理的依赖,因此父 POM 不会自动提供它的版本号,需要指定版本的依赖
导入模板引擎之后:
html可以放在templates目录下,接着controller层调用即可。
thymeleaf 语法:看官方文档学习
-
th:元素名
-
和Java代码很类似
test.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--所有html元素都可以被thymeleaf替换接管 th:元素名-->
<!--1.IntelliJ IDEA等IDE无法动态识别Thymeleaf模板中由控制器(@Controller)在运行时注入的变量,因此会显示"无法解析"的警告
2.Spring Boot在运行时才会将Model中的属性(如msg、users)注入模板,所以网页能正常显示。
3.只要在创建项目的时候勾选Thymeleaf插件就不会爆红了-->
<div th:text="${msg}"></div>
<div th:utext="${msg}"></div>
<div th:each="user:${users}" th:text="${user}"></div>
</body>
</html>
HelloController
@Controller
public class HelloController {
@RequestMapping("/test")
public String test(Model model){
model.addAttribute("msg","<h1>Hello,Springboot!!!<h1>");
model.addAttribute("users", Arrays.asList("yangshi","qingqing"));
return "test";
}
}
6.4、装配扩展SpringMvc
多读源码!!!!!
-
实现
WebMvcConfigurer并重写相关方法来自定义配置(推荐)//如果想要diy功能,写这个组件,将他交给springboot,springboot帮我们自动装配 @Configuration public class MymvcConfig implements WebMvcConfigurer{ //视图跳转 public void addViewController(ViewControllerRegistry registry){ registry.addViewController("/test1").setViewName("test"); return; } } -
使用
@EnableWebMvc+WebMvcConfigurer(完全控制 MVC 配置 ,即springboot原本默认的自动装配会失效)
在springboot中,有非常多的xxxxConfiguration 帮助我们进行扩展配置,注意注意!!!!!
7、员工管理系统
7.1、准备工作
模拟数据库
7.2、首页
注意点:
-
所有页面静态资源都需要使用thymeleaf接管:@{}
-
关闭模板引擎缓存:spring.thymeleaf.cache=false
-
推荐首页网址:server.servlet.context-path=/xxx (例如:/yang)
7.3、国际化(中英文切换)
7.4、登录功能
首页的登录组件 action由thymeleaf接管,传地址,同时写一个登录控制类且给他相同地址;登陆控制类执行方法跳转页面;
-
登录成功,重定向跳转成功登录之后的页面
-
登录失败返回首页,原本填写的内容显现,并出现用户或密码错误字条
7.5、登录拦截器
在config包写一个类实现HandlerInterceptor接口;在MyMvcConfig类添加拦截器的方法
7.6、增删查改
8、如何写一个网站
bootstrap 后端
前端:
-
百度 bootstrap 模板,拿别人的来改动
-
框架:组件(自己手动组合拼接) Bootstrap,Layui,semantic-ui
-
栅格系统
-
导航栏
-
侧边栏
-
表单
-
-
搞定前端,页面长什么样子,数据
-
设计数据库(数据库设计难点!!)
-
前端让他能够自动运行,独立化工程
-
数据接口如何对接:json,对象
-
前后端联调测试
有一套自己熟悉的后台模板!!!以后工作
Layui的 x-admin
前端界面:至少自己能通过前端框架组合出来一个网站页面 index,about,blog,post,user
让网站独立运行!
计划下面学习:
-
JDBC重点
-
Mybatis重点
-
Druid重点
-
Shiro重点
-
Spring Security(安全)
-
异步任务,邮件发送,定时任务
-
Swagger
-
Dubbo+Zookeeper
9、整合JDBC
创建项目勾选web,jdbc,Mysql驱动
application.yaml填写连接数据库信息
注意:版本新的要配置时区
10、整合Druid数据源
-
maven 仓库里面复制maven依赖;
-
yaml文件填写连接数据库信息时添加一个type
-
yaml文件配置一些其他属性信息(记得导入log4j的依赖)
-
还可以自定义配置:
-
config包下创建类并加注解(相当于一个一个bean)
-
写方法和yaml属性绑定
-
强大方法---后台监控,filter
-
11、整合mybatis
-
maven 仓库 里面复制maven依赖;
-
mapper包下建Usermapper接口,在resources目录下新建mybatis/mapper目录,并在其下建UserMapper.xml文件
-
去application配置文件,扫描主体类包,以及.xml文件(注意:classpath指的是resources目录)
MVC:
M:数据业务
V:视图
C:交接

浙公网安备 33010602011771号