springBoot

一、错误积累

1. 请求体是json数据时,加上@RequestBody注解,用java对象接收。

2.关于测试类junit ,如果你想用加上@SpringBootTest 注解的测试类,你就必须将它跟 启动类放在同一包下。

但如果你不想用测试类,那么可以随意去放。

2.事务回滚

关于错误的捕获,不要跟事务回滚弄混了。

统一错误捕获使用的是

@RestControllerAdvice
@ExceptionHandler
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler
    public Result ex(Exception e){
    e.printStackTrace();
    log.info("捕获异常{}",e.getMessage());
    return Result.error("默认异常已被返回到前端");
}
}

springBoot_第1张图片

3.事务传播行为

springBoot_第2张图片

springBoot_第3张图片

事务传播特性的默认值是 Required ,即有则加入,无则新建。

例如:上图的案例。

共用一个事务时(Required)。第①失效时,第②也会失效。日志就不会加到数据库里面。

当不共用一个事务时(required_new),调用②时,会先将当前的事务挂起,并去创建一个新事               务,②这个方法成功执行后,将新事物进行提交,

        接着恢复已挂起的事务,即使①发生了异常,也不会影响②的执行。

4.面向切面编程,要想配置一个切面,你得加上@component注解和@Aspect注解,

我记得还要开一个代理,来表示开启自动生成代理对象。但springboot好像不用。

springBoot_第4张图片

springBoot_第5张图片

springBoot_第6张图片

环绕通知的返回值比较特殊。

4.通知类型

springBoot_第7张图片

记得其他通知没有返回值,但对于加了环绕通知注解的@Around  ,是需要返回值的,这个返回值即为目标方法的返回值。

5.通知的执行顺序 (可以使用@order注解)

springBoot_第8张图片

6.切入点表达式

原来不知道的:  ①可以用接口  ② ..可以匹配任意类型的参数

springBoot_第9张图片

springBoot_第10张图片

7.另一种切点表达式 的形式:太神奇了

springBoot_第11张图片

例:

①定义一个接口,作为一个标记

springBoot_第12张图片

② 在需要增强 的方法上加上   标志性接口

springBoot_第13张图片

③在切面类上 使用 @annotation(标志性接口)

这样就会对加上 标志性接口的方法   进行  增强

springBoot_第14张图片

8.自己对ProceedingJointPoint和JointPoint的看法

springBoot_第15张图片

解决下图的疑问,是根据bean来找实现类的,不会同时出现两个。

springBoot_第16张图片

9.@Documented注解是什么意思?

springBoot_第17张图片

二、springboot原理篇

1.配置

springBoot_第18张图片

springBoot_第19张图片

2. bean管理

2.1 获取bean

这个其实挺简单的,因为 在看老杜的课时, 他讲了两种获取 applicationContext的方式,一种是根据配置文件,一种是根据配置类。这样就获得了IOC容器。

要想获取IOC容器中的bean,可以看下图 有三种方式

springBoot_第20张图片

下图中,使用@SpringBootTest注解 来进行测试。

原来不知道ApplicationContext 可以通过@Autowired注入进去

springBoot_第21张图片

2.2 bean的作用域

singleton   prototype   单例和多例

springBoot_第22张图片

2.3  第三方bean (@bean)

学习完bean的获取、bean的作用域之后,接下来我们再来学习第三方bean的配置。

之前我们所配置的bean,像controller、service,dao三层体系下编写的类,这些类都是我们在项目当中自己定义的类(自定义类)。当我们要声明这些bean,也非常简单,我们只需要在类上加上@Component以及它的这三个衍生注解(@Controller、@Service、@Repository),就可以来声明这个bean对象了。 但是在我们项目开发当中,还有一种情况就是这个类它不是我们自己编写的,而是我们引入的第三方依赖当中提供的。

springBoot_第23张图片

springBoot_第24张图片

(不推荐)解决方案①:在启动类上添加@Bean标识的方法

springBoot_第25张图片

解决方案②: 单独定义一个配置类

springBoot_第26张图片

springBoot_第27张图片

3.springboot原理

3.1 起步依赖

利用Maven依赖传递的特性.

如下图引入

springBoot_第28张图片

4.自动配置

springBoot_第29张图片

当在同一个类中既有@SpringBootApplication注解,又有 @ComponentScan注解,那么@ SpringBootApplication 注解里自带的@ComponentScan注解 会被覆盖。

springBoot_第30张图片

springBoot_第31张图片

springBoot_第32张图片

因此对于启动类来说,它也是一个配置类,可以声明第三方bean

springBoot_第33张图片

三、Maven高级

springBoot_第34张图片

将子工程的共有的依赖抽取到父工程中

springBoot_第35张图片

springBoot_第36张图片

springBoot_第37张图片

注意是在父工程进行 版本锁定,锁定后并不会引入相关依赖,而是去 约束子工程的版本。

springBoot_第38张图片

springBoot_第39张图片

Maven的聚合

springBoot_第40张图片

springBoot_第41张图片

springBoot_第42张图片

私服

springBoot_第43张图片

springBoot_第44张图片

springBoot_第45张图片

springBoot_第46张图片

你可能感兴趣的:(spring,boot)