一、Maven
1、下载 Maven
maven官网 Maven – Download Apache Maven
2、Maven的四大特征
(1)仓库:远程仓库、镜像仓库、本地仓库
(2)坐标:jia包下载的地址
(3)依赖:下载一个jar包,会下载和其相关的jar包
(4)命令 mvn cmd
①clean 对项目进行清理,清理的过程中会删除删除target目录下编译的内容。
②install 对本项目进行打包。三种打包方式,pom打包,jar包和war包。打包方式在pom.xml文件中进行指定。jar包就是普通的打包方式,可以是pom工程的子工程。war包的都是web工程,是可以直接放到tomcat下运行的工程。打成pom包和jar包的工程在新建的时候可以不需要制定maven项目的原型,达成war包的项目需要制定maven项目原型,指定的原型通常为maven-archetype-webapp,代表web项目。
③compiler 编译项目源代码。
maven依赖的传递性
说明: maven中的jar包是有依赖的传递性
例如: A项目依赖B.jar包, B.jar依赖C.jar. 在项目中,只需要添加B.jar.则B/C.jar都会自动添加.
maven依赖传递性实现原理
- 当maven开始解析项目的POM.xml文件时,根据依赖的坐标,找到指定的jar包文件.之后添加该依赖.
- 之后扫描当前依赖文件中的 xxx.pom文件,找到该jar包,添加依赖
- 之后重复以上过程
3、配置Maven文件中 settings.xml
镜像仓库配置
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
-->
<!-- 阿里云首选镜像,有不能下的包会在别的镜像源下载 -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!-- 默认下载源 -->
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
</mirrors>
本地仓库地址
<localRepository>E:\apache-maven-3.6.3-bin\repository</localRepository>
4、idea配置maven
二、初识springboot
1、什么是SpringBoot
Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让开发者尽可能快的跑起来 Spring 应用程序并且尽可能减少开发者的配置文件。
特点:
(1) 嵌入的Tomcat(服务器默认端口号8080)
(2)简化Maven配置
(3)提供了大量的自动配置,比如需要持久层数据源连接数据库,只需要提供对应属性就可以。
2、SpringBoot初始化构建
默认地址: https://start.spring.io
阿里云地址: https://start.aliyun.com
在idea中已经集成,当创建springboot项目时可以看到
3、框架之间的关系
Springboot是一个微服务框架,简化了应用的开发和部署。
Spring其核心就是控制反转(IOC),和面向切面(AOP),整合三方框架
Spring MVC接收用户发来的请求,处理业务,并给出相应
Mybatis与数据库相对接
4、springboot常用注解原文连接
spring和springmvc注解:
Spring和MVC_mvc和spri_S Y H的博客-优快云博客
mybatis和mp注解:
(8条消息) Mybatis和MP_mybatis 数组查询_S Y H的博客-优快云博客
5、修改springboot启动图案
第一步:springboot项目中,resources/目录下创建名为banner.txt的文件
第二步:在网站生成图案 Text to ASCII Art Generator (TAAG) (patorjk.com)
第三步:将图案cv,启动springboot项目。新图案就出来了
三、Lombok插件
1、lombok依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2、简化实体类代码
lombok常用提供常用注解
@Data //自动生成get/set方法
@Accessors(chain = true) // //开启链式加 原理:重写set/get方法
@NoArgsConstructor //无参构造
@AllArgsConstructor //全参构造
3、日志打印
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LoginController {
public String login(String username, String password) {
log.trace("日志级别 trace");
log.debug("日志级别 debug");
log.info("日志级别 info");
log.warn("日志级别 warn");
log.error("日志级别 error");
}
}
四、事务管理
1、声明式事务(注解方式)
在SpringBoot中声明式事务最常见,就是把需要事务的方法用@Transactional标注一下就行了,这个一般用在Service层。标注后该方法就具备了事务的能力,出错了会自动回滚。但是被标注后的整个方法都在事务中,影响效率
@Transactional作用:
- 默认条件下,只拦截运行时异常
- rollbackFor属性: 指定异常的类型回滚 rollbackFor = RuntimeException.class
- noRollbackFor属性: 指定异常不回滚 noRollbackFor = RuntimeException.class
- 在方法或者类上都可以添加。(如果在类上添加,则此类中的所有方法都会执行事务,不推荐,因为可能后续接手开发的小伙伴添加方法的时候根本不需要执行事务);不建议在接口上添加,因为注解不可被继承。
@Transactional失效场景:
spring事务(注解 @Transactional )失效的12种场景_spring事务失效场景_春天的早晨的博客-优快云博客
2、编程式事务
在 Spring Boot 中实现编程式事务又有两种实现方法:
- 使用 TransactionTemplate 对象实现编程式事务;
- 使用更加底层的 TransactionManager 对象实现编程式事务;
2.1 使用 TransactionTemplate 对象实现编程式事务
import org.springframework.transaction.support.TransactionTemplate;
@Autowired
private BaiduUserInfoMapper baiduUserInfoMapper;
@Resource
private TransactionTemplate transactionTemplate;
/*
* 测试编程式事务
* */
@GetMapping("/test/{sex}")
public String test(@PathVariable("sex") String sex) {
BaiduUserInfo baiduUserInfo = new BaiduUserInfo();
baiduUserInfo.setIdCard("213216546546");
baiduUserInfo.setSex(sex);
Integer execute = transactionTemplate.execute(transactionStatus -> {
// 进行数据更改操作
int i = baiduUserInfoMapper.updateBaiduUserInfo(baiduUserInfo);
// 故意设置一个报错,经过测试,此处使用try...catch捕获依旧生效
int a = 1 / 0;
return i;
});
return "成功" + execute;
}
测试:修改性别
五、依赖管理
1、pom.xml 标签
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml的版本和编码-->
<!-- xml 可扩展标记语言(EXtensible Markup Language)-->
<!-- xml 被设计用来传输和存储数据 html 被设计用来显示数据-->
<!-- xmlns-命名空间,类似包名,因为xml的标签可以自定义,所以需要命名空间来区分-->
<!-- xmlns:xsi-xml遵循的标签规范-->
<!-- xsi:schemaLocation-用来定义xmlschema的地址,也就是xml书写时需要遵循的语法,
两部分组成,前面部分就是命名空间的名字,后面是xsd(xmlschema)的地址-->
<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">
<!-- pom模型的版本-->
<modelVersion>4.0.0</modelVersion>
<!-- 父级项目,parent的引用是固定的;当我们创建一个 Spring Boot 工程时,可以继承自一个 spring-boot-starter-parent;父项目中定义了依赖的版本,我们继承了它,所以依赖dependence可以不写版本号,若不用父项目中的版本号则自己用<version>标签指定-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.0</version>
<relativePath/>
<!-- lookup parent from repository(从存储库中查找父级项目) -->
</parent>
&