springIOC

以前学习spring的时候总是说spring的特点是IOC和AOP,那具体是什么呢?
要是让我回答,我可能只知道IOC是一个管理bean的容器,需要使用bean的时候可以由IOC容器自动注入.
现在想想,通俗一点说: 我想要吃一些水果,因此有了水果这个类.

public class Fruit {}
public class Apple extends Fruit {}
public class Orange extends Fruit {}

public class Person {
    Fruit fruit;
}

不使用IOC

如果不使用IOC, 那我需要自己去开辟一块地将水果种出来

public class Person {
    Fruit fruit = new Apple();
}

当我今天不想吃苹果,想吃橘子的时候,必须去修改Person类中的Fruit实现类.

public class Person {
    Fruit fruit = new Orange();
}

使用IOC

如果使用IOC, 只要去水果店告诉店员一声,我需要水果, 水果店提供什么水果就可以吃什么水果

public class Person {
    @Autowired
    Fruit fruit;
}

@Configuration
public class Supermarket {
    @Bean
    public Fruit supply(){
        return new Apple();
    }
}

如果不想吃苹果,只要让水果店提供的水果改成另一种就可以了.
当然也有可能水果店会提供多种水果, 那只要声明一下想要哪种水果.

@Configuration
public class Supermarket {
    @Bean
    public Fruit apple(){
        return new Apple();
    }

    @Bean
    public Fruit orange(){
        return new Orange();
    }
}

public class Person {
    @Autowired
    @Qualifier("orange")
    Fruit fruit;
}

   转载规则


《springIOC》 echi1995 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
SpringBoot(二) SpringBoot如何实现自动配置 SpringBoot(二) SpringBoot如何实现自动配置
springboot也用了很久了,用的时候只知道他很好用,不需要再额外的配置乱七八糟的东西,那么到底是怎么做到的呢?以前我只会回答:SpringBoot中已经帮助我们配置了.现在回过来看看这个问题, 配置千奇百怪,SpringBoot是怎么
下一篇 
volatile如何实现有序性 volatile如何实现有序性
之前在java内存模型中提到过volatile,这次更深入一些探究一些volatile到底是怎么实现有序性. 我们分成五个部分来看 java源码 ByteCode字节码 JVM虚拟机规范 JVM虚拟机实现 CPU级别 字节码源码中使用
  目录