Java-springboot

SpringBoot

基本springboot 和 mybatis的工程环境搭建

流程:

  1. 建立MySQL数据库表
  2. 建立springboot工程(包含web启动依赖springweb、Mybatis、MySQL驱动、lombok等)
  3. 在配置文件中引入Mybatis的配置信息,与数据库连接
  4. 建立数据库表对应的实体类
  5. 创建三层结构文件,准备对应的Controller(类)、Service(接口、实现类)、Mapper(接口);

接口开发规范

遵循REST规范

alt text

springboot项目的配置文件

常见配置文件格式对比:
alt text

推荐使用的yml配置文件的语法:
alt text

@value

只能一个个的进行外部属性的注入

@ConfigurationProperties

yml配置文件中 阿里云OSS类相关属性的控制反转和依赖注入
alt text

@RestController

会自动得将返回对象转换成 json格式返回给前端

异常处理

在Springboot三层架构下,当代码出现异常时,请求响应返回的结果可能不符合前端指定需要的Result 格式规范

此时,要使用一个全局异常处理器对异常进行处理

全局异常处理器:

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* 全局异常处理器
*/
@RestControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(Exception.class) //处理的是所有异常
public Result ex(Exception ex){
ex.printStackTrace();
return Result.error("对不起,操作失败,请联系管理员");
}

}

事务管理

使用到的注解:**@Transactional**
位置:业务(service)层的方法、类、接口上(一般是加在业务层接口实现类中 执行增删改的方法上)
作用:将当前方法交给spring进行事务管理,方法执行前,开启事务,成功执行完毕,提交事务,出现异常,回滚事务。

事务管理属性——回滚

默认情况下,只有出现 运行时异常(即该异常继承于RuntimeException)才回滚。

rollbackFor

该属性用于控制出现何种异常类型,回滚事务。

@Transactional(rollbackFor = Exception = class)

事务管理属性——传播行为

事务传播行为:当一个事务方法 被 另一个事务方法调用时,这个事务方法应该如何进行事务控制

propagation
常用属性值:
alt text

配置文件

springboot 除了支持配置文件属性配置,还支持 Java系统属性(-Dxxx=xxx)命令行参数(–xxx=xxx) 的方式进行属性配置。

配置文件优先级:命令行参数 > Java系统属性 > properties > yml > yaml

Bean 管理

获取Bean 对象

默认的Bean对象名称是 :类名字母小写

默认情况下,Spring项目启动时,会把Bean 放到IOC容器中(当然,可能会受到作用域以及延迟初始化影响),但如果想主动获得Bean,可以通过一下方法:

在调用方法前,要先注入一个IOC容器对象 ApplicationContext

alt text

@Lazy

加上该注解后的类 会延迟初始化,即延迟到该类第一次使用的时候,才会放到IOC容器中去。

作用域 @Scope

默认是单例(singleton),即对于同一个类,只会创建出一个Bean对象。

多例: @Scope("prototype"); 每次使用该Bean,都会创建出一个新的实例(类的构造对象会被调用)

第三方的Bean

如果要管理的Bean对象不是自己定义的,是无法使用@component 及衍生注解声明bean的。就需要用到 @Bean

建议的方法:使用一个配置类集中管理 第三方bean

SpringBoot 原理

相较于 Spring,Springboot有两大优势:

  • 起步依赖 :很多依赖都已经配置好了
  • 自动配置 :当Springboot项目启动时,一些配置类、Bean对象会自动存入 IOC容器中,不需要手动去声明了。从而简化了繁琐的配置。

自动配置

@ComponentScan / @Import


Java-springboot
https://cs-lb.github.io/2024/10/25/Java/Java-springboot/
作者
Liu Bo
发布于
2024年10月25日
许可协议