12.控制反转IOC与面向切面编程AOP

这篇具有很好参考价值的文章主要介绍了12.控制反转IOC与面向切面编程AOP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、IOC-控制反转。

二、AOP-面向切面编程。


一、IOC-控制反转。

IOC(Inversion of Control)是控制反转的缩写,指的是将对象的创建过程和依赖关系的处理交给外部容器来实现,从而实现对象之间的解耦。因此,IOC不是容器,是一种编程思想,将对象之间的依赖关系的处理从程序中转移到容器(或者其他外部实现)中,控制程序的对象创建和依赖关系的管理。而容器是实现IOC思想的一种技术手段,即通过容器来实现对象之间的解耦。因此,可以说IOC既是控制反转,也是一种容器。

当使用IoC容器时,应用程序不直接调用对象,而是通过容器请求依赖关系。下面是一个简单的示例:

服务接口:

```
public  interface  IMyService  {
        void  doSomething();
}
```

服务实现:

```
public  class  MyService  implements  IMyService  {
        @Override
        public  void  doSomething()  {
                System.out.println(  Doing  something...  );
        }
}
```

客户端类:

```
public  class  Client  {
        private  IMyService  myService;
        
        public  Client(IMyService  myService)  {
                this.myService  =  myService;
        }
        
        public  void  doSomething()  {
                myService.doSomething();
        }
}
```

使用Spring的IoC容器配置:

```
<bean id=myService class=com.example.MyService />

<bean id=client class=com.example.Client>
        <constructor-arg  ref=myService />
</bean>
```

在这个示例中,客户端类依赖于接口IMyService。通过使用IoC容器,容器创建服务对象,并将其注入到客户端类的构造函数中,从而协调对象之间的依赖关系。这种设计方法通过将依赖关系从代码中移出来,使程序易于维护和测试。

二、AOP-面向切面编程。

AOP(Aspect-Oriented  Programming)是面向切面编程,是一种软件的编程思想。它是在OOP的基础上,通过预编译方式和运行期动态代理技术实现程序功能的统一维护的技术。在AOP中,通过预编译方式和运行期动态代理技术实现程序功能的统一维护。

AOP的作用是在不修改原有类的前提下,动态地为原有类提供额外的功能,比如安全验证、事务管理、日志记录、缓存等。下面通过一个简单的代码示例说明AOP的作用:  

我们假设有一个简单的Java类,其中包含了一个add()方法:

```java
public  class  Calculator  {
        public  int  add(int  num1,  int  num2)  {
                return  num1  +  num2;
        }
}
```

现在我们需要在add()方法执行时记录方法的执行时间,并打印日志。使用AOP,我们不需要修改原有类,只需要在AOP中实现这个功能,并在运行时将其注入到Calculator类中。

```java
public  class  LogAspect  {
        public  void  logMethodExecutionTime(JoinPoint  joinPoint)  {
                long  start  =  System.currentTimeMillis();
                joinPoint.proceed();
                long  end  = System.currentTimeMillis();
                System.out.println(Method + joinPoint.getSignature().getName()  
                 + executed  in +  (end  -  start) + ms);
        }
}

public  class  Calculator  {
        public  int  add(int  num1,int  num2)  {
                return  num1+num2;
        }
}
<bean  id=  logAspect    class=  com.example.LogAspect  />

<aop:config>
        <aop:aspect  ref=  logAspect  >
                <aop:pointcut  id=  calculation    expression=  execution(*  com.example.Calculator.add(..))  />
                <aop:before  method=  logMethodExecutionTime    pointcut-ref=  calculation  />
        </aop:aspect>
</aop:config>
```

以上代码中,LogAspect类实现了在方法执行时记录执行时间的功能。通过AOP配置,我们将LogAspect注入到Calculator类中,并指定在add()方法执行前执行logMethodExecutionTime()方法。当调用Calculator的add()方法时,AOP会自动执行LogAspect中的logMethodExecutionTime()方法,并在控制台输出方法执行时间的日志信息。文章来源地址https://www.toymoban.com/news/detail-407415.html

到了这里,关于12.控制反转IOC与面向切面编程AOP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AOP 面向切面编程 入门练习

    添加依赖 Spring配置文件 接口类和实现类 切面类 测试类

    2024年04月11日
    浏览(42)
  • Spring面向切面编程(AOP)

    AOP(Aspect Oriented Programming),即面向切面编程,利用一种称为\\\"横切\\\"的技术,剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为\\\"Aspect\\\",即切面。所谓\\\"切面\\\",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装

    2024年02月07日
    浏览(48)
  • Spring AOP:面向切面编程

    在软件开发中,我们经常会遇到一些横切关注点(cross-cutting concerns),如日志记录、事务管理和安全性等。这些关注点不属于特定的模块或类,而是横跨整个应用程序。传统的面向对象编程方法往往会将这些关注点与核心业务逻辑混杂在一起,导致代码的可读性和可维护性下

    2024年02月09日
    浏览(46)
  • [SSM]Spring面向切面编程AOP

    目录 十五、面向切面编程AOP 15.1AOP介绍 15.2AOP的七大术语 15.3切点表达式 15.4使用Spring的AOP 15.4.1准备工作 15.4.2基于AspectJ的AOP注解式开发 15.4.3基于XML配置方式的AOP(了解) 15.5AOP的实际案例:事务处理 15.6AOP的实际案例:安全日志 IoC使软件组件松耦合。AOP让你能够捕捉系统中经

    2024年02月15日
    浏览(48)
  • 认识 spring AOP (面向切面编程) - springboot

    本篇介绍什么是spring AOP, AOP的优点,使用场景,spring AOP的组成,简单实现AOP 并 了解它的通知;如有错误,请在评论区指正,让我们一起交流,共同进步! 本文开始 AOP: 面向切面编程,也就是面向某一类编程,对某一类事情进行统一处理; spring AOP: 是实现了AOP这种思想的一

    2024年02月14日
    浏览(50)
  • Spring AOP(面向切面编程)和方法拦截

    Spring AOP(面向切面编程)和方法拦截 Spring是一款广泛使用的Java开发框架,提供了丰富的功能和工具,用于简化企业级应用程序的开发。其中一个重要的特性是面向切面编程(AOP)和方法拦截。本文将介绍Spring AOP和方法拦截的概念、工作原理以及在实际开发中的应用。 在软

    2024年02月05日
    浏览(45)
  • 切面的魔力:解密Spring AOP 面向切面编程

    目录 一、AOP简介 1.1 什么是AOP ? 1.2 什么是面向切面编程 ? 1.3 AOP 的特点 二、 AOP的基本概念解读 2.1 AOP的基本概念 2.2 AOP 概念趣事解读 三、代码情景演示 3.1 编写目标对象(超级英雄们正常的行动) 3.2 编写通知类 3.2.1 前置通知 3.2.2 后置通知 3.2.3 异常通知 3.2.4 环绕通知

    2024年02月11日
    浏览(57)
  • JAVA:使用 Spring AOP 实现面向切面编程

    1、简述 在现代的软件开发中,面向切面编程(AOP)是一种重要的编程范式,它允许我们将横切关注点(如日志记录、性能监控、事务管理等)从应用程序的核心业务逻辑中分离出来,以提高代码的模块化和可维护性。Spring 框架提供了强大的 AOP 支持,使得我们可以轻松地实

    2024年04月13日
    浏览(45)
  • spring6-AOP面向切面编程

    1、场景模拟 搭建子模块:spring6-aop 1.1、声明接口 声明计算器接口Calculator,包含加减乘除的抽象方法 1.2、创建实现类 1.3、创建带日志功能的实现类 1.4、提出问题 ①现有代码缺陷 针对带日志功能的实现类,我们发现有如下缺陷: 对核心业务功能有干扰,导致程序员在开发核

    2024年02月08日
    浏览(53)
  • 【Spring AOP】结合日志面向切面编程 两种写法

            这里需要提前了解什么是Spring的AOP(Aspect Oriented Programming)。是在OOP(面向对象)思想的一种拓展思想。 简单来说就是将某个代码块嵌入到其它的代码块中 。笔者先前学Spring也有学什么IoC啊AOP啊,但实际上没有用过、就那听过学过没啥用的。。没会儿就忘记了。

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包