SpringBoot基础入门笔记
2023-12-15 06:00:18
SpringBoot基础入门笔记,源码可见下载链接
大家阅读时可善用目录功能,可以提高大家的阅读效率
下载地址:SpringBoot笔记+源码
SpringBoot简介
- 原生开发SpringMVC程序的过程
- 导入坐标
- Web核心配置类
- SpringMvc配置类
- Controller类实现功能
入门案例
创建SpringBoots入门程序步骤
- 创建新模块,选择Spring Initializr 并配置相关的基础信息——注意对应的JDK版本
- SpringBoot3.X 强制要求JDK版本不低于17
- JDK8 可使用SpringBoot2.X
- 勾选SpringWeb
- 开发控制器controller类
- 运行自动生成的Application类
- 可以看见Tomcat的端口号和版本信息
- 可以看见Tomcat的端口号和版本信息
Spring程序与SpringBoot程序对比
- pom文件中的坐标
- Spring : 手动添加
- Springboot: 勾选添加
- Web配置类
- Spring : 手动添加
- Springboot: 无
- Spring/SpringMvc配置类
- Spring : 手动添加
- Springboot: 无
- pom文件中的坐标
- Spring : 手动添加
- Springboot: 勾选添加
注:开发Spring程序需要确保联网且能够加载到陈虚谷框架结构,不使用idea可以直接去官网(start.spring.io)创建项目
Spring项目快速启动
- 对SpringBoot项目进行打包(执行Maven构建指令package)
- 执行启动指令
java -jar 名称.jar
- jar包的运行需要maven插件,打包时注意
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
SpringBoot概述
- SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发的过程
- Spring程序缺点
- 配置繁琐
- 依赖设置繁琐
- SpringBoot程序优点
- 自动配置
- 起步依赖(简化依赖配置)
- 辅助功能(内置服务器,…)
-
起步依赖
- starter
- SpringBoot中常见的项目名称,定义了当前项目使用的所有坐标,以达到减少依赖配置的目的
- parent
- 所有Spring项目都要继承的项目,定义了若干个坐标的版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
- 实际开发
- 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供
- 如发生坐标错误,再指定version(小心版本冲突)
- starter
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.0</version>
</parent>
<groupId>com.Lonelysnow</groupId>
<artifactId>SpringBoot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- SpringBoot在创建项目时,采用jar的打包方式
- SpringBoot的引导类时项目的入口,运行main方法就可以启动项目
- 变更起步依赖项非常便捷
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.0</version>
</parent>
<groupId>com.Lonelysnow</groupId>
<artifactId>SpringBoot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion><!--排除tomcat服务器-->
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId><!--改用jetty服务器-->
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
</dependencies>
</project>
基础配置
配置格式
SpringBoot提供了多种属性的配置方式
- application.properties
server.port=80
- application.yml
server:
port: 80
- application.yaml
server:
port: 80
如果yaml/yml文件没有自动补全,代码提示,可以在项目结构中将文件添加到项目的配置文件中
- Springboot配置文件的加载顺序
- application.properties
- application.yml
- application.yaml
yaml
yaml(YAML Ain’t Markup Language),一种数据序列化格式
-
优点
- 容易阅读
- 容易与脚本语言交互
- 以数据为核心,重数据轻格式
-
YAML文件拓展名
- .yml (主流)
- .yaml
-
语法规则:
- 大小写敏感
- 属性层级关系使用多行描述,每行结尾使用冒号结束
- 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用tab)
- 属性值前面加空格(属性名与属性值之间使用冒号+空格作为分割)
- # 表示注释
核心格式:冒号后加空格
- 数组数据在数据书写位置的下方使用减号作为数据的开始符号,每行书写一个数据,减号与数据间空格分割
likes:
- a
- b
- c
- d
读取数据的方式
- 使用@Value读取单个数据,属性名引用方式 ${一级属性名.二级属性名}
- 封装全部数据到Environment对象
- 使用自定义对象封装数据
- 关联数据时,自定义类中要使用 @ConfigurationProperties(prefix = “目标数据名”)
BookController —— 调用
@RestController
@RequestMapping("/books")
public class BookController {
@Value("${testA}")
private int testA;
@Value("${enterprise.C[0]}")
private String C;
@Value("${enterprise.C[1]}")
private String A;
@Autowired
private Environment environment;
@Autowired
private Enterprise enterprise;
@GetMapping
public String get() {
System.out.println(environment);
System.out.println("________________________________________");
System.out.println(enterprise);
return "hello world";
}
}
domain/Enterprise —— 自定义对象
@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
private String A;
private Integer B;
private String D;
private String[] C;
// ......
// getter setter方法省略
}
application.yml
testA: 100
enterprise:
A: AAA
B: 200
D: BBB
C:
- 前端
- aa
- ba
- ca
- da
多环境开发
多环境配置
- yaml/yml格式 —— 不区分环境名称的先后顺序
spring:
profiles:
active: dev
---
server:
port: 80
spring:
config:
activate:
on-profile: dev
---
server:
port: 81
spring:
config:
activate:
on-profile: pro
---
server:
port: 82
spring:
config:
activate:
on-profile: test
- application.properties —— 主配置文件
#设定需要的运行环境
spring.profiles.active=dev
- application-dev.properties —— 新建配置文件,专用来更改环境
server.port=82
多环境启动命令
- cmd带参数启动SpringBoot
- 先执行clean操作清空上一次的操作影响
- 在执行package将程序封包
- 在jar包路径下运行cmd
java -jar SpringBoot-0.0.1-SNAPSHOT.jar --spring.profiles.active=XXX(环境名称)
java -jar SpringBoot-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev --server.port=8081
可运行
java -jar SpringBoot-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev --server.port=8081 --server.port=8082
会报错
注意事项:
- 如果yml/properties文件中有汉字的话,打包会报错,可以先去idea中修改文件编码格式为UTF-8
- 如果输入的配置指令错误,程序也不会报错,会跳过当前这条配置,如果未读到有效配置,则使用默认配置
- 多条配置重复时会报错
- Spring配置文件加载顺序,优先级从高到低
与Maven共同进行版本控制
- Maven中设置多环境属性
- SpringBoot中引用Maven属性
- pom.xml
<project>
<!-- 无关配置已略去-->
<profiles>
<profile>
<id>dev</id>
<properties>
<profile.active>dev</profile.active>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<profile.active>pro</profile.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
</profiles>
<build>
<plugins>
<!-- 允许外部文件读取pom中的属性-->
<plugin>
<groupId>org.apache.maven.plugins </groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</build>
</project>
- application.yml
spring:
profiles:
active: ${profile.active}
---
server:
port: 80
spring:
config:
activate:
on-profile: dev
---
server:
port: 81
spring:
config:
activate:
on-profile: pro
---
server:
port: 82
spring:
config:
activate:
on-profile: test
配置文件分类
- 1,2级的路径是在jar包的目录下(跟着jar包走)
- 3,4级是写项目的时候配置的
整合第三方技术
SpringBoot整合JUnit
@SpringBootTest
class ApplicationTests {
@Autowired
private BookService bookService;
@Test
public void save(){
bookService.save();
}
}
Spring整合mybatis
Spring 整合mybatis(复习)
- SpringConfig
- 导入JdbcConfig
- 导入MybatisConfig
- JdbcConfig
- 定义数据源(加载properties配置项:driver,url,username,password)
- MyBatisConfig
- 定义SqlSessionFactoryBean
- 定义映射配置
SpringBoot整合MyBatis
- 创建新模块,选择Spring初始化,并配置模块相关基础信息
- 选择当前模块所需要使用的技术集(MyBatis,Mysql)
- 设置数据源参数
- 定义数据层接口与映射配置(记得引入Mapper坐标)
- 测试类中注入dao接口,测试功能
- pom.xml(勾选数据集之后会多出两个坐标)
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
</dependencies>
- application.yml
spring:
profiles:
active: ${profile.active}
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: 123456
- BookDao(让Spring能扫描到,并为其添加自动代理)
@Mapper
public interface BookDao {
@Select("select * from tbl_book where id = ${id}")
Book getById(Integer id);
}
- ApplicationTests
@SpringBootTest
class ApplicationTests {
@Autowired
private BookDao bookDao;
@Test
public void testById(){
Book book = bookDao.getById(3);
System.out.println(book);
}
}
基于SpringBoot的SSM整合
- pom.xml
- 配置起步依赖,必要的资源坐标(druid)
- druid的作用:能够重复利用数据库连接(有些类似线程池),提高对请求的响应时间和服务器的性能。
- application.yml
- 设置数据源,端口等
- 配置类
- 全部删除
- dao
- 设置Mapper
- 测试类
- 页面:
- 放在resource目录下的static目录中
文章来源:https://blog.csdn.net/lonely__snow/article/details/134908256
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!