• bean属性注入的方式及AOP的概述


    在创建bean对象的时候,动态的给属性进行赋值  

    • Spring创建对象默认调用的是无参构造 - 记住
    • 1:构造器注入 
    • 2:set方法注入 
    • 3:接口注入

     

     

    • 注意:配件文件的方式只支持构造器注入和set方法注入

    注解配置

    • 配置文件能够做的,注解都可以做
    • 开发流程:
    • 1:引入约束,context

     

    • 2:配置扫描机制
    • 启动spring的注解扫描机制

     

    • 3:添加注解
    • 1):@Component - 通用注解 - 如果需要将类的对象交给spring 管理的话,直接在类上添加这个注解即可,默认的bean的名字是类名的首字母小写
    • 2)在实际开发的时候,使用他的衍生注解

     

     

     

     

     

    • 4:依赖注入
    • @Autowired---是按照类型注入,
    • @Resource----是按照类型或者名称注入,如果使用名字进行注入的话,则必须要有一个bean的名字存在,如果不存在会报错。

    • 5:bean的作用域
    • 注解默认的也是单例的,如果需要多例,需要在对应的类上配置scope注解,@Scope(value=”prototype”)

    注解和xml混用

    • 1:xml实现核心配置
    • 2:注解实现bean的声明以及注入

    AOP的概述

    什么是aop

    AOP Aspect Oriented Programing 面向切面编程 ----是一种编程思想:在不修改源代码的情况下,对目标方法进行增强

    使用动态代理的机制,在不修改源代码的情况下,对某些方法进行动态的增强

    传统开发:

     

    发现很多重复的代码:

    解决方案:

    众多方法中的所有共有代码全部抽取出来,放置到某个地方集中管理,然后在具体运行时,再由容器动态织入这些共有的代码

    AOP解决之后:

     

    好处:

    1:程序员在编写具体的业务逻辑处理方法时,只需关心核心的业务逻辑处理,既提高了工作效率,又使代码变更简洁优雅

    2:日后的维护中由于业务逻辑代码与共有代码分开存放,而且共有代码是集中存放的,因此使维护工作变得简单轻松

    aop的应用场景   

    场景一: 记录日志

    场景二: 监控方法运行时间 (监控性能)

    场景三: 权限控制

    场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象,第二次调用,直接从内存对象返回,不需要查询数据库 )

    场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )

    aop的相关术语

     

    Spring AOP编程两种方式

    lSpring 1.2 开始支持AOP编程 (传统SpringAOP 编程),编程非常复杂 ---- 已不再使用

    l Spring 2.0 之后支持第三方 AOP框架(AspectJ),实现另一种 AOP编程 -- 推荐

    aspectj切面编程

     

     

    面向切面编程流程:

    • 1:编写目标(UserMapper - addUser - 切入点)
    • 2:编写advice (通知,)
    • 3:导包和引入约束

     

    • 在xml文件中引入aop约束
    • springAOP的拓展,AOP联盟的规范,spring对aspect的支持,aspectj的官方包
    • 4:配置aop自动代理
    • 在spring的核心配置文件中配置aop的自动代理:
    • 5:配置切入点和切面

     

    • 注意:
    • 1:通知以及目标必须都是由spring管理的。
    • 2:声明切面类@Aspect - 配置切入点表达式是在切面类中进行配置 - 一般情况下就是增强的类
    • 3:使用切入点表达式进行配置
    • 切入点表达式的语法
    • bean(beanId/name)  -- 表示拦截某个bean下面的所有的方法
    • execution(* com.sky.service..*.*(..))
    • *:匹配任何数量字符;
    • ..:匹配任何数量字符的重复,如在类型模式中匹配任何数量包和子包;而在方法参数模式中匹配任何数量参数。

  • 相关阅读:
    Java8 lamda函数式编程,常用的Consumer/Function/Operator/Supplier/Predicate
    【HMS Core】【SDK集成】Android Studio中Gradle Version7.1+以上版本如何集成agcp插件?
    pythonn笔记 -- 模块、文件
    CPC客户端的安装教程
    flume之Ganglia的部署
    关于jQuery_绑定事件处理器的方法
    分布式中的CAP原理
    汇编语言实验4:分支程序题目设计
    Vue_Bug VUE-ADMIN-TEMPLATE-MASTER electron build后无法登录
    基于SpringBoot的个人博客系统设计与实现
  • 原文地址:https://blog.csdn.net/m0_73030012/article/details/127781872