Spring简解

 在了解Spring我们首先要知道什么是Spring

Spring是一个包含了众多的工具方法的容器.是一个轻量级的javaEE解决方案,而Spring的诞生就是为了解决企业应用开发的复杂性创建的.


Spring的核心时IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)


IOC和DI

IOC(控制反转):将创建对象的权力交与容器,对象的实例不再由调用者创建,而是由容器统一创建管理,控制权由应用代码转移到了容器.从而实现了控制反转,它同时也是Spring的核心思想之一.

通俗的理解就是:

假若此时你突然想吃一份羊肉面,你就需要买份羊肉 买面条.而这些过程是你主动进行的.也就是需要你自己主动创造.

随着时代的发展,现在你想吃的话,可以直接去饭馆里面.此时饭馆就相当于一个容器.

你并没有主动地去做饭,而是饭馆去做,甚至于比你做得更好.

如下图所示

public class Test {
    public static void main(String[] args) {
        Tire tire = new Tire(20);
        Bottom bottom = new Bottom(tire);
        Framework framework = new Framework(bottom);
        Car car = new Car(framework);
        car.init();
    }
}

class Car {
    private Framework framework;

    public Car(Framework framework){
        this.framework = framework;
    }
    public void init(){
        System.out.println("do car");
        framework.init();
    }
}
​
class Framework {
    private Bottom bottom;

    public Framework(Bottom bottom){
        this.bottom = bottom;
    }

    public void init(){
        System.out.println("do framework");
        bottom.init();
    }
}

class Bottom {
    private Tire tire;

    public Bottom(Tire tire){
        this.tire = tire;
    }

    public void init(){
        System.out.println("do bottom");
        tire.init();
    }
}

public class Tire {
    private int size = 12;

    public Tire(int size){
        this.size = size;
    }

    public void init(){
        System.out.println("size -- >" + size);
    }
}



​

在我们原来的代码中new对象时是由当前类所控制的而有了IOC后对象的管理权就由非当前类的IOC容器管理了.


DI(依赖注入):当一个java的实例创建另一个Java的实例时,创建被调用者的实例时不是由调用者实现的,而是由Spring容器实现后注入调用者.

IOC和DI的区别: 从上述介绍我们不难看出IOC和DI其实就是同一个概念的不同的实现而已.

都是实现对象的解耦.如果要说区别的话那就是IOC是一种设计思想.而DI则是一种具体的实现.

比如今天的天气好我想要出去跑步,这就是IO.

我想要去哪里跑,跑多久,就是DI.


AOP和OOP

OOP(面向对象的编程):对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加高效的逻辑单元划分。但是它也有缺点,那就是当具体关注点聚焦时,面向对象无法简单解决问题.因此延伸出了AOP.

AOP(面向切面编程):对业务处理过程中的切面进行提取,它是处理过程中的某个步骤或阶段.AOP是一种可以在不改变原来代码的基础上,通过“动态注入”代码,来改变原来执行结果的技术。

上述两种思想在目标上有着本质的差异,但要注意OOP和AOP并不是对立的,而是为了弥补OOP的不足,OOP解决了竖向的问题,AOP则解决横向的问题。因为有了AOP我们的调试和监控就变得简单清晰.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值