Spring突击复习第二天

发布时间:2023-12-14 09:30

1、SpringAOP

1.1 作用

  1. 将业务逻辑中的通用功能横切出来的操作
  2. 通常日志,安全,缓存等这一类的功能,可以使用AOP来实现

1.2 概念

核心AOP概念

  • 连接点
    • 程序执行过程的一个点,例如方法的调用,或抛出异常
  • 切入点
    • 选择一个或多个连接点的表达式
  • Advice
    • 在选择的每个连接点执行的的代码
  • 切面
    • 一个蘘括了切入点和Advice的模块
  • 编织
    • 将切面与主要代码进行结合的技术

面向切面最早是AspectJ 字节码编程 (1995 )

SpringAOP集成AspectJ主要是面对企业级开发

1.3 Advice - 五种使用方式 都是在通用业务的方法上做标记

  1. @Before 在目标方法执行之前
    • 如果说通用业务出现异常,目标方法就不执行了
  2. @After 在目标方法执行之后
    • 只要目标方法执行完成,那么通用业务就会执行
    • 目标方法执行完成:
      • 正常返回
      • 出现异常
  3. @AfterReturning 在目标方法正常返回的时候
    • 只有在正常返回的时候才会执行,出现异常就不执行了
  4. @AfterThrowing 在目标方抛出制定异常的时候
    • 只有在目标方法出现指定异常时才会执行
  5. @Around 环绕,可以获取目标方法,在目标方法前后都可以执行—最常用
    • ProceedingJoinPoint 能够替代目标方法,目的是将目标方法在@Around方法中调用,只有@Around能够终止异常传播

1.4 表达式

  1. execution([@方法上的注解全名] [访问权限修饰符] 返回值 [类的全名.]方法名(参数))
  2. 可以使用通配符 * 匹配一个 …匹配0或多个
  3. 多个execution可以使用 &&,||,!来连接

2、SpringBoot

1、依赖管理

  1. SpringBoot 父级POM
    • 规定了大多数依赖的版本,可以避免程序员自己引入依赖,出现版本的冲突和不兼容问题
  2. SpringBoot的入门POM(spring-boot-starter)
    • 轻松协调依赖项,仅导入spring-boot-starter既可引入16个相关依赖,便捷容易(还有更多可选的包含web,jdbc等依赖)
  3. 通用测试库
    • spring-boot-starter-test 作用是将绝大多数测试用的依赖引入进来

2、自动配置

SpringBoot会自动创建他认为你需要的Bean

SpringBoot项目的主启动类@SpringBootApplication合成注解的元注解包含三个主要内容

  1. @SpringBootConfiguration 底层就是@Configuration,标记该类是一个配置类及内部可以有@Bean
  2. @ComponentScan 组件扫描,配置了路径,默认扫描当前类所在包下的所有组件
  3. @EnableAutoConfiguration 启动自动配置注解

2.1 自动配置是如何实现的

  1. 提前在spring-boot-autoconfigure包下面有/MEAT/INF的文件中有一个spring.factories的文件,内部有很多配置类
  2. 这些类都有@Configuration和@Bean注解来标注
  3. 通过@Conditional的条件注解来判断它认为你是否需要该Bean

自动配置的执行时机

当你应用程序中的Bean创建完成执行,自动配置才会执行,自动配置会生成他认为你需要的Bean

3、覆写

SpringBoot设置是为了让覆写更简单(覆写,就是覆盖写,你的内容会覆盖SpringBoot自动配置的内容)

3.1 属性的覆写

SpringBoot内部有几百种属性,可以通过在application.properties对属性值进行覆写,覆写以后该文件内容稳准

因为写在其中的属性名称比较多,极容易造成覆写操作,因此一些不想覆盖的属性要写在其它配置文件中

3.2、显示定义Bean如果跟自动配置Bean发生碰撞,以显示定义的为准,如果不想自动生效,或者关闭自动配置可以在一下两项中配置

  1. @EnableAutoConfiguration(execlud=DataSourceAutoConfiguration.class)
  2. spring.autoconfigure.exclude = 类的全名

3.3、更多依赖项

如果在SpringBoot中的依赖项不满足你的需求,可以更改依赖项版本,或者将starter内的依赖项进行抛出替换,甚至内部的Tomcat都可以替换或抛出,SpringBoot中只能有一个内嵌式服务器

总结:SpringBoot的自动配置就是为了“查漏补缺”,SpringBoot覆写更加容易

4、外部Properties

程序员通常把属性值信息放在外部properties文件中

  1. SpringBoot会默认读取application.properties文件中的内容(默认是放在resource文件下的,可以创建一个config文件夹,放在该文件下也能读取到),提供给Environment对象和@Value,可以通过Environment对象.getProperty()和@Value获取到
  2. 如果想读取其他配置文件 需要使用@PropertySource注解
  3. Profile会将配置信息进行分组,在一个@onfiguration的配置类中通过注解@Profile进行分组,application–{profile}.properties进行分组,可以在代码定义选择不同的画境,方便配置的随时更换

5、fat jar

是一种打包方式,在打包jar的时候同时将项目依赖及内嵌式服务器一起打包,这样打开,就可以直接在云服务器等地方直接运行,不需要过多的环境

打包成普通的jar文件是不包含依赖,如果想运行还需要配置依赖

也可以打包成war文件

想打包 fat jat 仅需通过Maven等工具的一个依赖轻松构建

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号