spring和springboot知识点

spring和springboot的事务
Spring:需要手动进行事务的配置和管理。Spring支持的事务有两类一是编程式事务,二是声明式的事务。
编程式事务:编程式事务管理是指将事务管理代码嵌入到业务方法中来控制事务的提交和回滚。
声明式事务:声明式事务管理是指将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理。(使用注解的方式,直接在方法上加@Transactional注解即可)                 
Spring Boot:集成了Spring的事务管理功能,并通过约定优于配置的原则,为开发者提供了一系列默认的事务配置。开发者只需在需要事务控制的方法或类上使用@Transactional注解,Spring Boot就会自动为该方法或类创建和管理事务。


事务的传播机制
1、REQUIRED:如果当前存在事务,就加入该事务。如果当前没有事务,就创建一个新事务。(spring默认的事务传播行为)
2、REQUIRES_NEW:不管是否存在事务,都创建一个新的、自己的事务。如果当前已经在事务中了,会挂起当前事务。
3、NESTED:如果当前已经在一个事务中了,则嵌套在已有的事务中作为一个子事务。如果当前没在事务中则开启一个事务。
4、SUPPORTS:支持当前事务。如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。
5、MANDATORY:强制、必须使用事务。如果当前 已经存在事务,就加入该事务,如果当前不存在事务,就 抛出异常。
6、NOT_SUPPORTED:不支持事务。如果当前存在事务,就把当前事务 挂起。如果当前没有事务,就以非事务执行。
7、NEVER:禁止事务 。如果当前存在事务,则 抛出异常,如果当前没有事务,以非事务方式执行。

在spring boot当中有五条执行语句,有五个事物的处理机制,那么需要去判断是哪一条事物,出现了回滚。
给五条执行语句设置不同的异常类型,然后通过查看异常日志就能知道是哪条语句出现了回滚。
也可以通过设置@Transactional注解中的属性如rollbackFor来指定哪些类型的异常会导致事务回滚,并且可以在异常发生时记录这些信息。


spring、springboot、mybatist、mybatistplus常用的注解
@Controller    标记一个类作为Spring MVC控制器。

@Component:标记类为Spring管理的Bean。
@Service:标记业务逻辑层的类为Spring管理的Bean,是@Component的一个特例。
@Repository:标记数据访问层(DAO层)的类为Spring管理的Bean,也是@Component的一个特例。
@Configuration:标记类作为配置类,可以替代XML进行配置。
@Bean:在@Configuration类中定义Bean。
@EnableAutoConfiguration:启用自动配置,Spring Boot应用中最常见的启动类注解。
@Mapper:标记接口为MyBatis的Mapper接口。
@TableId:标记实体类中的主键字段。可以设置type的属性来使用不同的主键策略。如ID_WORKER(雪花算法)、ID_TYPE_AUTO(自增)、UUID(通用唯一识别码)、INPUT(手动输入)、NONE(默认不生成主键)。
@TableField:标记实体类中的字段,可以指定数据库字段名、是否忽略等。
@Autowired    用于依赖注入,可以配合@Qualifier 注解来指定具体要注入的 bean 名称。
@Resource      用于依赖注入,可以通过 @Resource 的 name 和 type 属性进行显式指定。
@RestController   类似于@Controller,但默认返回的是数据而不是视图。通常与@RequestMapping一起使用。
@RequestMapping   在类或方法级别声明HTTP请求的映射规则。可以指定请求的URL路径和HTTP方法类型(GET, POST, PUT, DELETE等)。
@GetMapping   用于映射HTTP GET请求。
@PostMapping  用于映射HTTP POST请求。
@PutMapping   用于映射HTTP PUT请求。
@DeleteMapping  用于映射HTTP DELETE请求。
@PatchMapping  用于映射HTTP PATCH请求。
@RequestParam  用于获取URL中的参数值。
@PathVariable   用于从URL路径中获取参数值。
@ModelAttribute   用于将方法参数或返回值绑定到模型对象上。
@RequestBody:用于获取HTTP请求体中的内容。通常用于处理JSON或XML格式的数据。

IOC:控制反转,也叫DI依赖注入,指的是将对象的创建权交给 Spring 容器去创建,利用了工厂模式将对象交给容器管理,只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。不需要我们手动new去创建对象,大大降低了代码间的耦合度,使资源更加容易管理。
AOP:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP可以分离业务代码和关注点代码(重复代码),在执行业务代码时,动态的注入关注点代码。切面就是关注点代码形成的类。Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。
JDK动态代理:被代理⽬标对象必须实现某⼀或某⼀组接⼝ 实现⽅式 通过回调创建代理对象。
CGLIB 动态代理:被代理⽬标对象可以不必实现接⼝,继承的⽅式实现


SpringBoot 启动流程:
1、加载启动类
当 SpringBoot 项目启动时,会在当前工作目录下寻找有@SpringBootApplication注解标识的类,并把这个类作为应用程序的入口点。如果找不到这样的主类,则会打印错误信息并退出。
2、加载配置文件
SpringBoot会自动扫描当前项目的resources目录,并加载其中的application.properties或application.yml等配置文件。这些配置文件中包含了应用程序的各种参数,例如数据库连接信息、日志级别等等。
3、初始化ApplicationContext
SpringBoot会创建一个SpringApplication对象,并调用其run()方法来初始化ApplicationContext。这个过程中,SpringBoot会读取配置文件中的参数,并将它们转换成Environment对象中的属性。同时,它还会扫描当前项目中的所有Bean,并将它们注册到ApplicationContext中。
4、启动内嵌的Web服务器
SpringBoot内置Tomcat和Jetty等Web服务器,当SpringBoot应用程序启动时,它会根据配置文件中的信息自动创建Tomcat或Jetty等Web容器,并将Spring容器注册到Web容器中,使得SpringBoot应用程序可以直接以Web应用程序的形式运行。
5、启动应用程序
根据之前创建好的 Spring 容器以及Web服务器,启动相应的线程进行服务处理。
6、监听应用程序的状态
SpringBoot会监听应用程序的状态,并根据需要进行相应的操作。例如,当应用程序退出时,它会打印出详细的日志信息,并将应用程序的上下文环境恢复到初始状态。


SpringBoot打包流程:
1、引入打包插件依赖maven-compiler-plugin。该插件可以将Spring Boot应用程序打包成一个可执行的JAR或WAR文件。
2、打开maven窗口,在Lifecycle列中,双击package打包项目。Idea控制台显示DUILD SUCCESS则表示打包成功。


SpringBoot部署流程:
1、打开jar文件所在目录,然后打开powerShell窗口
2、执行运行命令java -jar xxxxx.jar(其中"xxxxx"表示jar包的物理路径)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值