//写在前面
20210512
为了毕设,找了一门springboot的课程,尽量把有用的东西都记录下来,持续更新至学完。
1.SpringBoot概述
1.1目标
了解SpringBoot是什么、有什么作用
1.2小结:
(1)SpringBoot是一个可以便捷搭建Spring工程的脚手架,可以帮助开发人员快速搭建大型的Spring项目。
(2)SpringBoot最核心的思想就是“依赖大于配置”,相比Spring而言减少了很多繁琐的配置过程,使得开发人员可以把更多的时间用来想功能怎么实现,业务怎么实现,而不是成天配环境。
2.SpringBoot入门
2.1目标
能够使用SpringBoot搭建项目
2.2分析
需求:可以在浏览器中访问http://localhost:8080/hello
实现步骤:(助记:贱赖动里侧)
1.创建工程(New Projects时候直接选择Maven类型即可,JDK选择自己电脑的版本)
2.添加依赖在pom.xml中(启动类依赖 spring-boot-starter)(springboot之所以能减少配置是因为添加了启动依赖)(只要加了parent剩下的其他依赖不用写版本号,因为这个父依赖已经把那些版本号包含了)
3.创建启动类
-
package cn.wzw;
-
-
import org.springframework.boot.SpringApplication;
-
import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-
/**
-
* SpringBoot工程都有的启动引导类,也是工程的入口类
-
* 注解为:@SqringBootApplication
-
* main函数可以通过psvm这个快捷键实现
-
* main函数里面是要run这个application类
-
*/
-
@SpringBootApplication
-
public
class Application {
-
public static void main(String[] args){
-
SpringApplication.run(Application.class,args);
-
}
-
}
4.创建处理器(RestController注解返回的是字符串之类的)(编码顺序:@RestController,因为分析需求需要返回一行字符串 - hello函数 - @GetMapping 因为只是需要读取一下字符串所以选这个注解)
-
package cn.wzw.controller;
-
-
import org.springframework.web.bind.annotation.GetMapping;
-
import org.springframework.web.bind.annotation.RestController;
-
-
/**
-
* controller就是处理器的意思,主要编写一些逻辑的代码
-
* 注解@RestController相当于@ResponseBody+@Controller
-
* 返回的一定是字符串之类的
-
*/
-
@RestController
-
public
class HelloController {
-
@GetMapping("hello")
-
public String hello(){
-
return
"Hello,SpringBoot!";
-
}
-
}
5.测试(在启动类启动SpringBoot项目,在浏览器中输入http://localhost:8080/hello)
其他:
- groupiId和artificialId被称作坐标,是为了保证项目唯一性而设立的。groupId分为很多段,第一段是域(域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织,cn是中国的意思),第二段是公司名字,artificialId就是项目名称。 比如个人的项目可以叫cn.XXX.project1(其中XXX为姓名缩写之类的)。
- 依赖需要在pom.xml 文件中加入
-
<dependencies>
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-web</artifactId>
-
<version>
2.4.
5</version>
-
</dependency>
-
</dependencies>
- 加了父工程依赖之后,自己不用加依赖版本号
- 因为我把maven的路径给改到了自己专门装软件的一个磁盘,没有放到默认的c盘的.m2文件夹,所以刚开始依赖没有导入。因为是maven依赖没导入,所以要尝试去找maven的问题
- psvm是idea里写main函数的简化方法。File-Settings-Editor-Live Templates中可以在java目录下面加入类似的简写。
- http://localhost:8080/hello中的hello是映射路径
- GET与POST方法的区别
- SpringBoot的Controller分为两类,一类是 @Controller,另一类是@RestController
总结:SpringBoot工程可以通过添加启动器依赖和创建启动引导类来创建web工程 spring-boot-starter-web默认应用服务端口为8080
3.Java代码配置
3.1 目标
3.2 分析
需求:使用java代码配置数据库连接池,并在处理器中可以使用
3.3 步骤
- 添加依赖
-
<dependency>
-
<groupId>com.alibaba </groupId>
-
<artifactId>druid </artifactId>
-
<version>1.2.6 </version>
-
</dependency>
-
- 创建数据库:在navicat随便创建一个数据库
-
jdbc.driverClassName = com.mysql.jdbc.Driver
-
jdbc.url = jdbc:mysql://127.0.0.1:3306/exam
-
jdbc.username = root
-
jdbc.password = 123456
-
- 创建数据库连接参数的配置文件jdbc.properties
- 创建配置类
- 改造处理器类 注入数据源 并使用
3.4 总结
3.5 其他
常用的java注解
- @Configuration:声明为一个配置类,代替xml文件
- @Bean:声明在方法上,将方法的返回值加入Bean容器,返回Bean标签
- @Value:属性注入
- @PropertySource:指定外部属性文件
引用了新的依赖之后记得重启maven
学到了@Bean那里
4 SpringBoot属性注入方式
4.1 目标
能够使用@ConfigurationProperties实现SpringBoot配置文件的配置项的读取或应用
4.2 分析
需求:将配置文件中的配置项读取到一个对象中
实现:可以使用SpringBoot提供的注解@ConfigurationProperties,该注解可以将SpringBoot的配置文件中的配置读取到一个对象中(默认必须为application.properties或为application.yml)
实现步骤:
- 创建配置类JdbcProperties类,并且在类名上添加@ConfigurationProperties注解
-
package cn.wzw.config;
-
-
import org.springframework.boot.context.properties.ConfigurationProperties;
-
-
/**
-
* 配置项类。
-
* 作用:从配置文件application中读取配置项
-
* prefix的作用:是前缀
-
* 配置项类中的类变量名必须与配置前缀之后的配置项名称保持 松散绑定(相同)
-
*/
-
@ConfigurationProperties(prefix = "jdbc")
-
public class JdbcProperties {
-
private String url;
-
private String driverClassName;
-
private String username;
-
private String password;
-
-
public String getUrl() {
-
return url;
-
}
-
-
public void setUrl(String url) {
-
this.url = url;
-
}
-
-
public String getDriverClassName() {
-
return driverClassName;
-
}
-
-
public void setDriverClassName(String driverClassName) {
-
this.driverClassName = driverClassName;
-
}
-
-
public String getUsername() {
-
return username;
-
}
-
-
public void setUsername(String username) {
-
this.username = username;
-
}
-
-
public String getPassword() {
-
return password;
-
}
-
-
public void setPassword(String password) {
-
this.password = password;
-
}
-
}
-
- 将Jdbc.properties类修改名称为application.properties类
- 将Jdbc.properties对象注入到JdbcConfig
- 测试
4.4小结
- 使用@ConfigurationProperties编写配置项类将配置文件中的配置项设置到对象
-
@ConfigurationProperties(prefix = "jdbc")
-
public class JdbcProperties {
-
private String url;
-
private String driverClassName;
-
private String username;
-
private String password;
-
-
public String getUrl() {
-
return url;
-
}
-
-
public void setUrl(String url) {
-
this.url = url;
-
}
-
-
public String getDriverClassName() {
-
return driverClassName;
-
}
-
-
public void setDriverClassName(String driverClassName) {
-
this.driverClassName = driverClassName;
-
}
-
-
public String getUsername() {
-
return username;
-
}
-
-
public void setUsername(String username) {
-
this.username = username;
-
}
-
-
public String getPassword() {
-
return password;
-
}
-
-
public void setPassword(String password) {
-
this.password = password;
-
}
-
- 使用@ConfigurationProperties在方法上使用
-
@Bean
-
@ConfigurationProperties(prefix = "jdbc")
-
public DataSource dataSource() {
-
return new DruidDataSource();
-
}
-
4.5 其他
- shift+F6 改名字
5 多个yml文件配置
目标:
分析:
yaml与properties配置文件除了展示形式不同之外,其他功能和作用都一样,在项目中原路的读取方式不需要改变。
yml配置文件特征:
树桩层级结构展示配置项
配置项之间有关系的话需要分行空两格
配置项如果有值的话,那么需要在冒号之后再加一个空格
例如application.properties为
-
jdbc.driverClassName = com.mysql.jdbc.Driver
-
jdbc.url = jdbc:mysql://127.0.0.1:3306/exam
-
jdbc.username = root
-
jdbc.password = 123456
转变为applicaiton.yml为
-
jdbc:
-
driverClassName: com.mysql.jdbc.Driver
-
url:
jdbc:
mysql:
//127.0.0.1:3306/exam
-
username: root
-
password:
123456
YAML定义Ain't Markup Language。Yaml是一种简洁的标志性语言,以数据为中心,使用空白、缩进和分行组织数据,从而使数据更加简洁易读。
如果有两种配置文件,都可以读取,要是有同名的,会以properties为准
7 lombok应用
目标:使用lombok的注解实现pojo类的简化
使用SpringBoot整合SSM工程,需要用到数据库的数据
lombok是一个插件工具包;提供了一些注解@Data,@Getter等注解简化实体类的方法
1.在idea中安装lombok插件
2.添加lombok对应的依赖到项目pom.xml中
3.改造数据
8 SpingBoot整合-SpringMVC端口和静态资源
目标:可以修改tomacat端口,访问项目中的静态资源
分析:
- 修改tomcat端口
- 访问项目中的静态资源
9 配置拦截器
目标:可以在spring项目中配置自定义SpringMVC拦截器
分析:
编写拦截器(实现HandlerInterceptor)
编写配置类实现WebMvcConfugurer,在该类中
10 SpringBoot整合-事务连接池
目标:配置SpringBoot自带默认的hikari数据库连接池和使用@Transactional注解进行事务配置
分析:
事务配置
添加事务相关的启动器依赖,mysql相关依赖
编写业务类UserService使用事务注解@Transactional
数据库连接池hik
转载:https://blog.csdn.net/weixin_42454041/article/details/116717301