• Spring突击复习第二天


    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等工具的一个依赖轻松构建

  • 相关阅读:
    字节技术面都过了,薪资都谈好了20K*13结果还是被刷了,问HR原因是。。。
    shell示例
    java八股文面试[数据库]——慢查询优化
    springboot+vue微信小程序的医院核酸检测预约挂号微信小程序#毕业设计
    【Shell脚本12】Shell 输入/输出重定向
    计算机网络高频面试题集锦
    背诵不等于理解,深度解析大模型背后的知识储存与提取
    R语言——类与对象
    Unity笔记(10):SHOOT GAME EXAMPLE【2D】
    基于SaaS平台的iHRM管理系统测试学习
  • 原文地址:https://blog.csdn.net/XHH_3344/article/details/125444941