`
繁花碎落
  • 浏览: 10304 次
  • 性别: Icon_minigender_2
  • 来自: 西安
最近访客 更多访客>>
文章分类
社区版块
存档分类

Spring IoC与AOP的核心思想

阅读更多
IoC和AOP都是Spring的核心思想

    当然,最为一个框架级的轻量组件,大量的配置文件是不可缺少的,但是核心是要把这些配置文件,配置节组装起来,并将核心代码编写为完全业务无关的。我们看看Spring是怎么做的。

    首先,IoC,控制反转。Spring 开发的基本思想:面向接口的编程模式。框架做的越多,应该越能发现接口在其中起到的作用,而Spring将这种想法,开始贯彻到业务的开发中了。Bean 的Set方法使用接口作为参数,保证其扩展性,实现依赖关系的松偶尔。所谓的控制反转,作为中文更好理解的一个翻译应该是依赖注入,把依赖的类采用接口的方式,利用Set函数,传入Bean的内部,实现与外界的解耦合。这种注入也可作用于构造函数。

    其次,AOP,面向切面的编程方式,我觉得更通俗的说法应该是对容器内的Bean进行方法干涉。被容器中创建的类,看起来执行一个普通的函数调用,因为被容器预处理,而会在方法执行前/后进行一些其他的、可配置的操作。当然,这种方法也同样是面向接口的,或者直接使用反射的。利用java.lang.reflect.InvocationHandler接口可以达到这种干涉的效果。下面是转载的一个简单示例。


   import java.lang.reflect.InvocationHandler;   
2. 4  import java.lang.reflect.Method;   
3. 5  import java.lang.reflect.Proxy;   
4. 6  
5. 7  public class DynaProxyHello implements InvocationHandler {   
6. 8      
7.11    private Object proxy;   
8.12      
9.15    private Object delegate;   
10.16  
11.17      
12.24    public Object bind(Object delegate,Object proxy) {   
13.25           
14.26        this.proxy = proxy;   
15.27        this.delegate = delegate;   
16.28        return Proxy.newProxyInstance(   
17.29                this.delegate.getClass().getClassLoader(), this.delegate   
18.30                        .getClass().getInterfaces(), this);   
19.31    }   
20.32      
21.36    public Object invoke(Object proxy, Method method, Object[] args)   
22.37            throws Throwable {   
23.38        Object result = null;   
24.39        try {   
25.40            //反射得到操作者的实例   
26.41            Class clazz = this.proxy.getClass();   
27.42            //反射得到操作者的Start方法   
28.43            Method start = clazz.getDeclaredMethod("start",   
29.44                    new Class[] { Method.class });   
30.45            //反射执行start方法   
31.46            start.invoke(this.proxy, new Object[] { method });   
32.47            //执行要处理对象的原本方法   
            result = method.invoke(this.delegate, args);   
//            反射得到操作者的end方法   
            Method end = clazz.getDeclaredMethod("end",   
                    new Class[] { Method.class });   
//            反射执行end方法   
            end.invoke(this.proxy, new Object[] { method });   
  
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
        return result;   
    }   
  
}   
  
       
  
 public class Test {   
    public static void main(String[] args) {   
        IHello hello = (IHello)new DynaProxyHello().bind(new Hello(),new    LoggerOperation());   
        hello.sayGoogBye("Double J");   
        hello.sayHello("Double J");   
           
    }   
}  



     当然,不是只有这一个实现方式,java的代理功能只能代理接口,如果要代理类的化,可以使用cglib。

    Spring框架当然不会是上述的那么简单(实际上它非常复杂),不过我关注的是核心的实现方式和设计思想。在有些时候,我们不需要使用Spring,甚至不能使用Spring(比如不用Java开发),但是这种思想和方式是可以复用的。使用这种设计思想,按照当前的语言和环境要求,实现自己的IoC和 AOP框架。
分享到:
评论

相关推荐

    以注解方式模拟Spring IoC AOP

    在Spring框架中,依赖注入(Inversion of Control, IoC)和...虽然这种模拟简化了Spring的复杂性,但其核心思想是一致的:降低耦合,提高可维护性和可扩展性。理解并实践这些概念,对于掌握Spring框架的精髓至关重要。

    Spring IOC AOP MVC 简单例子

    IOC,也称为控制反转,是一种设计模式,其核心思想是将对象的创建和管理交给容器来处理,而不是由对象自身负责。Spring框架的IOC容器负责创建对象、管理对象之间的关系以及执行对象的生命周期方法。例如,`SpringIOC...

    myeclipse spring IOC和AOP 例子

    控制反转是一种设计模式,它的核心思想是将对象的创建和管理交由容器负责,而不是由对象自身来创建和管理。在Spring中,这个容器就是ApplicationContext。以下是如何在Spring中声明和注入bean: 1. **Bean的声明**...

    Spring IOC和AOP代码与笔记整理

    Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。本篇将深入探讨Spring的这两...

    Spring IOC和Spring AOP_spring aop_springIOC

    Spring的IOC,也称为控制反转,它是一种设计思想,核心就是将对象的创建和管理权交给容器,而不是由代码直接创建。这样做的好处在于,开发者不再需要关心对象的生命周期,只需要定义好对象的配置,由Spring容器负责...

    Spring中IOC/AOP的说明和例子

    **IOC(控制反转)**是Spring的核心特性,它的主要思想是将对象的创建和管理权交给了容器。在传统的程序设计中,我们通常会手动创建对象并管理它们的依赖关系。而在IOC模式下,开发者只需定义对象的接口和实现,...

    Spring3.1 IOC+AOP需要的jar包

    控制反转是一种设计模式,它的核心思想是将对象的创建和管理交给一个外部容器,而不是由对象自身负责。在Spring框架中,这个容器就是ApplicationContext。当使用IOC时,对象之间的依赖关系被反转,不再由对象自己去...

    spring ioc di aop详解

    在 Spring 中,IOC(Inversion of Control,控制反转)和 DI(Dependency Injection,依赖注入)是两个核心概念,而 AOP(Aspect Oriented Programming,面向切面编程)则是实现模块化和解耦的重要工具。现在,我们...

    Spring AOP IOC源码笔记.pdf

    IoC的核心思想是将对象的创建和管理职责从应用程序转移到框架中。在Spring中,这通过BeanFactory和ApplicationContext实现。BeanFactory是Spring的底层容器,负责管理Bean的生命周期,而ApplicationContext提供了更...

    Spring核心IoC和AOP的理解

    Spring核心IoC和AOP的理解 本文主要介绍了Spring核心IoC和AOP的相关知识,涵盖了IoC和AOP的概念、特点、优点和应用场景等方面的内容。 一、IoC(Inversion of Control) IoC是一种设计模式,目的是为了降低应用...

    SpringIOC和AOP原理设计模式

    Spring框架的核心特性主要体现在Spring的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)上。这两个概念在实际的软件开发中扮演着非常重要的角色,能够极大地提高代码的...

    spring教程 ioc aop

    通过学习这个教程,你将掌握Spring的IOC和AOP核心概念,并了解如何将Spring与Hibernate整合,提升你的Java企业级应用开发能力。文件"Spring-T1 (Ioc+SSH整合)"着重于IOC和SSH(Spring、Struts、Hibernate)的整合,...

    Spring中IOC(反转控 制) 和 AOP(面向方面编程)

    在Java世界里,Spring框架是应用最广泛的轻量级框架之一,它的核心特性包括IOC(Inversion of Control,反转控制)和AOP(Aspect Oriented Programming,面向方面编程)。这两个概念是Spring框架的灵魂,极大地提升...

    spring之ioc和aop

    IoC是Spring的核心特性之一,它的基本思想是将对象的创建和管理权交给容器,而不是由对象自身负责。在传统编程中,对象通常会自行创建依赖的对象,而在IoC中,对象的依赖关系由外部容器(如Spring的...

    Spring IOC AOP

    Spring IOC的核心思想是将对象的创建和管理交给Spring容器,而不是由类自身负责。通过这种方式,对象之间的依赖关系被反转,从而降低了组件之间的耦合度。Spring容器通过XML、注解或者Java配置来管理Bean的生命周期...

    小马哥讲 Spring AOP 编程思想 - API 线索图.pdf

    - **容器(1对1关联)**:此处可能指的是Spring IoC容器与AOP配置的一对一关联。 - **PointcutAdvisor(切点通知器)**:一个组合了Pointcut和Advice的接口,用于将切点和通知结合在一起。 - **...

    Spring中IOC和AOP的深入讲解

    在本篇文章中,我们将深入讲解 Spring 中的两个核心概念:Inverse of Control(IOC)和 Aspect-Oriented Programming(AOP)。我们将通过示例代码和详细的解释,逐步介绍 Spring 中的 IOC 和 AOP 的概念和实现方式。...

    IOC和AOP深刻理解基础代码测试

    首先,让我们来看看IOC,它是一种设计原则,核心思想是将对象的创建和管理权交给外部容器,而不是由对象自身负责。在传统编程中,我们经常看到类直接创建所需依赖的对象,这种方式导致了紧密耦合,不易于测试和重用...

    Spring IOC容器实现分析.pdf 下载

    五、Spring AOP与IOC的关系 Spring的另一个核心特性是AOP(面向切面编程),它和IOC容器紧密相关。AOP允许开发者定义横切关注点,如日志、事务管理等,然后在合适的时间点自动插入到业务逻辑中。在Spring中,AOP...

Global site tag (gtag.js) - Google Analytics