什么是事务事务是一组操作的集合,它是一个不可分割的工作单位,这些操作要么同时成功,要么同时失败。
操作顺序
开启事务(一组操作开始前,开启事务):start transaction / begin
提交事务(这组操作全部成功后,提交事务):commit
回滚事务(中间任何一个操作出现异常,回滚事务):rollback
Spring事务管理
注解:@Transactional
位置:业务(service)层的方法上、类上、接口上
作用:将当前方法交给spring进行事务管理,方法执行前,开启事务,方法执行后,提交事务,出现异常,回滚事务
1234logging: # 开启事务管理日志 level: org.springframework.jdbc.support.jdbcTransactionManager: debug
rollbackFor默认情况下,只有出现RuntimeException才回滚异常。rollbackFor属性用于控制出现何种异常类型,回滚事务。
例子:
1234567@Transactional(rollbackFor = Excepti ...
会话技术会话技术:在服务器端创建一个与客户端浏览器相关的数据,用来记录客户端浏览器的访问信息。
会话:用户打开浏览器,访问Wb服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据。
会话跟踪方案:
客户端会话跟踪技术:Cookie
服务器端会话跟踪技术:Session
令牌技术
Cookie和Session都是传统的会话技术
Cookie优点:
HTTP协议中支持的技术缺点:
存储空间有限,通常情况下不能存储二进制数据
不能跨域访问
不安全,用户可以自己禁用Cookie
Session优点:
部署在服务器,安全缺点;
服务器集群环境下无法直接使用Session
Cookie的缺点
JWT令牌技术JWT令牌技术:JSON Web Token,是一种用于在网络应用环境间传递声明的开放标准(RFC 7519)。
全称称:JSON Web Token(https://jwt.io/)
定义了一整简洁的、自包含的格式,用于在通 ...
简介
是一款优秀的持久层框架,用于简化JDBC,原名iBatis
源码托管在Github,Mybatis
一般都是在Spring Boot中直接使用
SpringBoot数据库连接配置
1234spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/mybatisspring.datasource.username=rootspring.datasource.password=1234
• 使用@Mapper注解自动配置接口,接口方法再使用@Select('select * from user')注解,让IOC自动创建实现类的时候自动实现方法• 数据库连接池
是一个容器,负责分配、管理数据库连接(Connection)
允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗留
在pom文件中直接引入连接池的依赖,就切 ...
Spring
未读SpringBoot配置文件优先级:yaml = yml > properties
常用的配置1234567891011121314151617181920spring: # 数据库配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/nodaoli username: nodaoli password: nodaoli servlet: # 文件上传配置 multipart: # 单个文件最大上传大小 max-file-size: 10MB # 多个文件最大上传大小 max-request-size: 100MBmybatis: configuration: # 设置Mybatis的日志功能 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 启用Mybatis的自动驼峰大写功 ...
Cloudflare
未读Cloudflare R2是一个基于Amazon S3 API的云存储服务,它允许您存储和检索对象,如图像、视频、音频和文档。
Cloudflare R2使用Amazon S3 API,因此您可以使用任何Amazon S3 SDK或工具来与R2进行交互。
引入Maven依赖
1234<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId><version>2.27.13</version>
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component;import org.springframework ...
Spring
未读
application.properties配置1234567891011121314151617# 添加数据库spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/nodaolispring.datasource.username=nodaolispring.datasource.password=nodaoli# 添加MyBatis的日志,可以使用@Slf4j注解,log.info()静态方法输出日志mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl# 添加MyBatis的驼峰命名自动转换mybatis.configuration.map-underscore-to-camel-case=true# 配置单个文件的最大上传大小spring.servlet.multipart.max-file-size=10MB# 配置多 ...
当软件可执行文件当前目录中新建一个名为data的文件夹,便携模式会将此文件夹将作为基础启动文件夹,作为Home Directory
在不同系统上,可执行文件位置有所不同:
Windows:安装目录中Clash for Windows.exemacOS:软件包目录中/Contents/MacOS/Clash for Windows
当文件夹存在时,重启软件即可进入便携模式,此时软件将会读取/写入数据至该目录
Spring
未读个人理解:注入是在一个配置文件中设置类,对象的属性值。
通俗理解:
原生注入就是在源码封装的类中使用set和get方法
Spring bean注入就是在Spring配置文件.xml中的<bean>标签,使用<property>设置属性值
原生set注入方法我们封装了一个类,创建对象的时候,通过原生的set和get方法设置访问对象
或者通过构造器注入(也就是自动构造器)
1234567891011121314151617181920212223242526272829303132333435363738394041class book { private String bname; private String bauthor; public book() { } public book(String bname, String bauthor) { this.bname = bname; this.bauthor = bauthor; } ...
概念Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。
我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建的 Java 对象没有任何区别。
bean定义信息:我在配置文件中(xml)中配置好我需要的类的信息(我需要什么对象),把这个信息交给IoC容器(告诉IOC我要的对象),让IOC给我返回
DI(Dependency Injection):依赖注入,依赖注入实现了控制反转的思想
指Spring创建对象的过程中,将对象依赖属性通过配置进行注入
获取Bean的三种方式
1234567891011// id获取User user1 = (User) context.getBean("user");System.out.println("id获取"+user1);// 类型(class)获取User user2 = context.getBean(User.class);System.out.println("类型获取" ...