目录
工具:idea2019,jdk8
技术学习必要性
1.市场占有率很高
2.非常重要 (https://spring.io)
3.Java开发者写程序必备技能,没有之一
1.SpringBoot入门程序开发
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程(高效)Spring程序缺点
1.依赖设置繁琐
2.配置繁琐比如:我们需要手动去配置大量的参数,没有默认值,需要我们管理大量的jar包和它们的依赖
SpringBoot程序优点
1.起步依赖(简化依赖配置)
2.自动配置(简化常用工程相关配置)3.辅助功能(内置服务器,.....)
2.步骤
SpringBoot入门程序
2. 1 创建新模块,选择Spring Initalizr,并配置模块相关基础信息2.2选择当前模块需要使用的技术集
2. 3.SpringBoot的版本号
2.4.开发控制器类
package com.ssm.demo.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/index") public class HelloSpringboot { @GetMapping public String getById(){ System.out.println("springboot is running"); return "springboot is running"; } }
*最简SpringBoot程序所包含的基础文件
pom,xml文件
Application类pom.xml
<?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>2.6.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ssm</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency> <dependency> <groupId>com.spring4all</groupId> <artifactId>spring-boot-starter-swagger</artifactId> <version>1.5.1.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
*Spring程序与SpringBoot程序对比
1.没网时连接springboot
2.阿里云连接springboot
http://start.Laliyun.com 下面同上
3.隐藏文件或文件夹
Idea中隐藏指定文件或指定类型文件
Setting ->File Types ->Ignored Files and Folders输入要隐藏的文件名,支持*号通配符
回车确认添加
4.Parent(父母)
1.开发SpringBoot程序要继承spring-boot-starter-parent
2.spring-boot-starter-parent中定义了若干个依赖管理
3.继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
4.继承parent的形式也可以采用引入依赖的形式实现效果
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
*不同的版本(version),区别在于依赖的版本也不同(1.ctrl+alt+点进入2.ctrl+b)
5.starter
*parent但仅定义未使用
starter:SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的
*parent
*所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的spring-boot-starter-parent各版本间存在着诸多坐标版本不同
@实际开发
@使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,除非SpringBoot未提供对应版本@如发生坐标错误,再指定Version (要小心版本冲突)
6.引导类
1.SpringBoot工程提供引导类用来启动程序
2.SpringBoot工程启动后创建并初始化Spring容器
package com.ssm.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
*SpringApplication.run(DemoApplication.class, args);是一个spring容器 *SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目 *SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean
7.内嵌tomcat
*辅助功能
*使用maven依赖管理变更起步依赖项
内置服务器
*tomcat 粉丝多,应用面广,负载了若干较重的组件
*jetty 更轻量级,负载性能远不及tomcat
*undertow undertow,负载性能勉强跑赢tomcat
8.REST(springMVC)
9.基础配置
9.1属性配置
9.2配置文件分类
yml(主流)
9.3yaml文件
yaml书写的时候没有提示,把它修改成配置文件
9.4yaml数据读取
package com.xj; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * @Author:豆浆 * @name :MyDataSource * @Date:2024/3/14 11:15 */ //1.定义数据模型封装yaml文件中的数据 //2.定义为spring 管控的Bean @Component //3.指定加载的数据 @ConfigurationProperties(prefix = "datasource") public class MyDataSource { private String driver; private String url; private String username; private String password; @Override public String toString() { return "MyDataSource{" + "driver='" + driver + '\'' + ", url='" + url + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } public String getDriver() { return driver; } public void setDriver(String driver) { this.driver = driver; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } 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; } }
10.整合第三方技术
10.1整合JUnit
10.2整合MyBatis
10.3整合MyBatis-Plus
10.4整合Druid
11.Lombok
12.打包与运行
13.多环境开发
交换时自有点:compile生效
14.日志
14.1日志基础
日志(log)作用
- 编程期调试代码
- 运营期记录信息
- 记录日常运营重要信息(峰值流量、平均应时长……)
- 记录应用报错信息(错误堆栈)
- 记录运维过程数据(扩容、宕机、报警……)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
14.2日志输出格式控制
14.3日志文件
15.热部署
1.开启开发者工具
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
2.激活热部署:Ctr1 +F9
自动热部署
1.
2.ctrl+alt+shift+/
五秒后自动热部署
16.配置高级
16.1@ConfigurationProperties
16.2宽松绑定/松散绑定
16.3常用计量单位绑定
16.4数据校验
开启数据校验有助于系统安全性,J2EE规范中JSR383规范定义了一组有关数据校验相关的API
<!--1.导入JSR303规范-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<!--使用hibernate框架提供的校验器做实现类-->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
17.测试
17.1加载测试专用属性
加载测试临时属性应用于小范围测试环境 :
17.2加载测试专用配置
加载测试范围配置应用于小范围测试环境
17.3Web环境模拟测试
18.数据层解决方案
数据源:
内置持久化解决方案--JdbcTemplate:
加上:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
去除:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
数据库:
19.整合第三方技术
20.监控
springboot原理篇:
21.自动配置
12.1bean加载方式(复习)
第一,二是spring的方式
第一:
第二:
@controller,@service,@repository
第三方的Bean
第三:
相等于
FactoryBean
在老项目(xml)下+新项目(注解)
@Configration与@componentScan的区别
第四:
配置类就是里面加载了bean
第五:
第六:
第七:
第八:
12.2bean加载控制(复习)
编程式:
使用@Conditional注解的派生注解设置各种组合条件控制bean的加载(springboot提供)
21.3bean依赖属性配置
21.4自动配置原理
21.5变更自动配置
22.自定义starter
教你如何实现自定义SpringBootStarter_springboot自定义starter-CSDN博客
超简单 定义一个自己的starter_自定义starter-CSDN博客