`

spring--AOP简单解析

阅读更多
SPRING总结

一:IOC
实现IOC的方式有四种
        1. 通过setter的方法注入
        2. 通过构造器方式注入
        3. 通过接口的方法注入
        4. 通过标注的方式注入

IoC的意思是反向控制,就是说在初始化一个Bean时会将其相关的Bean都初始化,初始化Bean一般是在调用Bean容器的getBean方法时启动的(也有例外),其实现原理是:Bean容器的getBean方法会致使Bean的实例化和初始化,两个方法分别是createBeanInstance和populateBean,populateBean其实就是在设置Bean的各项属性,依赖注入也就发生在这个时候,设置Bean属性时会检查出Bean是否依赖了其它的Bean,如果存在依赖的话则会在相关的Bean容器里面去取依赖的Bean实例,如果相关的Bean还未实例化则会进行创建,这样又会调用容器的getBean方法,从而以递归的形式将一个Bean及其依赖的Bean全部创建好,这就是Spring的IoC原理。


二:AOP
spring对AOP的支持
        1.若是目标对象实现了接口,那么会采用JDK的动态代理机制实现AOP
        2.若是目标对象实现了接口,可以强制使用cglib实现AOP,及底层通过ASM等操作字节码进行动态代理
        3.若是目标对象没有实现接口,必须使用cglib来实现AOP,SPRING会在CGLIB和JDK之间进行切换

JDK实现AOP必须实现接口java.lang.reflect.InvocationHandler.java

AOP实现基本都是字节码操作库譬如CGLIB/BCEL/ASM来做, 字节码修改库,更彻底的AOP可以采用调用aspectJ来实现。

问题一:如何强制实现CGLIB?
        1.添加CGLIB库
        2.在配置文件中添加:<aop:aspectj-autoproxy proxy-target-class="true"/>

问题二:JDK和CGLIB的区别?
        JDK只能对实现了接口的类生成代理,而不能针对类
        CGLIB是针对类实现代理的,主要对指定的类生成一个子类,并覆盖其中的方法


特殊的地方:若是即配置了xml,又配置了标识的话,那么会把方法执行两次
分享到:
评论

相关推荐

    spring-aop-3.0.xsd spring-beans-3.0 spring-context-3.0.xsd spring-mvc-3.1.xsd

    `spring-aop-3.0.xsd` 是 Spring AOP 的 XML 配置文件,定义了与 AOP 相关的元素和属性。例如,你可以在这里定义切入点(pointcut)、通知(advises)以及代理配置。将此文件添加到 Eclipse 的 XML 目录(catalog)...

    spring-aop.xsd

    这里的`spring-aop-3.2.xsd`根据项目使用的Spring版本进行替换,以确保正确解析配置。 总的来说,`spring-aop.xsd`是Spring AOP配置的基础,它帮助开发者理解并正确编写AOP配置,提升开发效率。通过学习和熟练掌握...

    spring-aop.jar

    《深入解析Spring AOP框架——以spring-aop.jar为例》 Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的核心部分之一,它为Java开发者提供了强大的面向切面的编程能力。本文将围绕...

    AOP.rar-Spring-AOP源码Demo

    - **`org.springframework.aop.aspectj.AspectJExpressionPointcut`**:实现切入点表达式的解析和匹配。 - **`org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAdvisorFactory`**:处理基于...

    spring-aop-4.2.xsd.zip

    XSD文件在Spring框架中主要用来验证和解析基于XML的配置文件,例如`beans.xml`,这些文件定义了bean的实例化、依赖注入、AOP切面等配置。 压缩包内的子文件"spring-aop-4.2.xsd.txt"可能是XSD文件的文本版本,方便...

    spring-aop-4.0.0.RELEASE

    《Spring AOP 4.0.0.RELEASE:深度解析与应用》 Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它为开发者提供了声明式事务管理、日志记录、权限控制等核心功能。在4.0.0....

    spring-framework-4.3.30.RELEASE-dist.zip

    《Spring框架4.3.30.RELEASE:深入解析与应用》 Spring Framework是Java开发领域中的一个核心框架,以其模块化、松耦合和强大的依赖注入特性而闻名。本次我们关注的是Spring Framework的4.3.30.RELEASE版本,这是一...

    spring-IOC-AOP调用大致过程(源码分析)

    spring version: 5.0.0; jdk: 1.8 IOC大致调用顺序(IOC调用的AOP标签解析)

    spring-security-web源码所需jar包

    《Spring Security Web源码解析与相关依赖》 Spring Security Web是Spring Security框架的重要组成部分,它主要负责Web应用程序的安全性,包括认证和授权等核心功能。本文将深入探讨Spring Security Web的源码,并...

    2024-spring-aop学习项目

    二、AOP术语解析 1. 切面(Aspect):包含关注点和通知的模块化单元,是AOP的核心。 2. 连接点(Join Point):程序执行过程中的特定点,如方法调用、异常抛出等。 3. 通知(Advice):在特定连接点执行的代码,可以...

    开源框架spring详解-----AOP的深刻理解

    标签中的“源码”提示,这篇博文中可能还涉及到了Spring AOP的底层实现,可能分析了Spring如何通过代理模式生成拦截器链,以及如何在运行时解析并执行切点表达式。了解这些底层机制有助于开发者更有效地利用AOP,...

    spring-context-3.2.0 spring-core-3.2.0 等齐全的Spring jar包

    这里提到的是一组完整的Spring库,包括`spring-core`、`spring-context`、`spring-webmvc`、`spring-web`、`spring-beans`、`spring-test`、`spring-jdbc`、`spring-orm`、`spring-aop`和`spring-tx`,它们都是3.2.0...

    spring-framework-5.0.0.RELEASE-dist.zip

    《Spring框架5.0.0.RELEASE:深度解析与应用》 Spring框架是Java开发中的一个核心组件,尤其在企业级应用开发中占据着举足轻重的地位。本压缩包"spring-framework-5.0.0.RELEASE-dist.zip"包含了Spring框架5.0.0....

    spring-framework-master

    《Spring框架深度解析》 Spring Framework,作为Java开发领域中的基石,是企业级应用开发的首选框架。"spring-framework-master"这一压缩包包含了Spring框架的完整源码,为我们提供了深入理解这一强大工具的绝佳...

    spring-framework-1.0-with-dependencies.zip

    《Spring Framework 1.0 全面解析》 Spring Framework 是一个开源的Java平台,它为构建企业级应用提供了全面的基础设施。这个名为"spring-framework-1.0-with-dependencies.zip"的压缩包包含了Spring Framework 1.0...

    spring源码--AOP流程--笔记.docx

    2. 解析 AOP 配置:在解析 Bean 定义文件时,Spring AOP 也会解析 AOP 配置文件,例如 `&lt;aop:config&gt;` 标签。在这个过程中,Spring AOP 使用 configBeanDefinitionParser 来解析 AOP 配置文件,并生成相应的 Bean ...

    spring-framework-3.1.2.RELEASE jar包

    此外,Spring 3.1引入了HandlerMethodArgumentResolver接口,使得自定义参数解析变得更加简单。 在事务管理方面,Spring 3.1.2.RELEASE改进了声明式事务处理,增强了对多数据源的支持,并提供了更细粒度的控制,...

    spring-5.3.14-dist.zip(spring-framework-5.3.14)

    《Spring Framework 5.3.14:深度解析与应用》 Spring Framework是Java开发中的一个核心框架,自2003年推出以来,已经成为了企业级应用开发的事实标准。本次我们关注的是Spring Framework的5.3.14版本,这个版本在...

    spring-5.3.3-dist.zip

    2. **AOP(面向切面编程)**:Spring支持AOP,允许开发者定义“切面”,这些切面可以封装横切关注点,如日志、事务管理和安全性,使得核心业务逻辑更清晰。 3. **Spring MVC**:Spring MVC是Spring提供的Web开发...

    官方完整包 spring-framework-5.3.7.RELEASE-dist.zip

    - **Spring MVC**:是一个用于构建Web应用的全功能MVC框架,提供请求处理、视图解析、模型绑定等功能。 - **Spring Data**:简化了与各种数据存储(如数据库、NoSQL等)的交互,提供了统一的API。 - **Spring ...

Global site tag (gtag.js) - Google Analytics