快捷搜索: 王者荣耀 脱发

spring面试题之——控制反转(IOC)

什么是spring ioc容器?

spring框架的核心是spring容器。容器创建对象,将他们装配在一起,配置它们并管理它们的完整生命周期。spring容器使用依赖注入来管理组成应用程序的组件。容器通过读取配置的配置元数据来接受对象进行实例化,装配和组装的指令。该元数据可以通过XML、java注解或者是java代码提供。

什么是依赖注入?

在依赖注入中,您不必创建对象,但必须描述如何创建它们。您不是直接在代码中将组件和服务连接在一起,而是描述配置文件中哪些组件需要哪些服务。由IOC容器将他们装配在一起。

可以通过多少种方式完成依赖注入?

通常有三种:

1、构造器注入

2、setter方法注入

3、接口注入

在spring framework中,仅使用构造器注入二号setter注入。

区分构造器注入和setter注入

spring中有多少种ioc容器?

BeanFactory:就像一个包含bean集合的工厂类。它会在客户端要求时实例化bean。

ApplicationContext:ApplicationContext接口扩展了BeanFactory接口。它在BeanFactory基础上提供了一些额外的功能。

区分BeanFactory和ApplicationContext

列举一些Ioc的好处

它将最小化应用程序中的代码量。

它将使应用程序易于测试,因为它不需要单元测试用例中任何单例或者JNDI查找机制。

它以最小的影响和最少的侵入机制促进松耦合。

它支持即时的实例化和延迟加载服务。

spring ioc的实现机制

spring中的Ioc的实现原理就是工厂模式和反射机制。

//简单示例
public interface Fruit {
    void eat();
}

public class Apple implements Fruit {
    public void eat() {
        System.out.println("Apple");
    }
}

public class Orange implements Fruit {
    public void eat() {
        System.out.println("Orange");
    }
}
public class Factory {
    public static Fruit getInstance(String ClassName) {
        Fruit f = null;
        try {
            f = (Fruit) Class.forName(ClassName).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return f;
    }
}
public class Client {
    public static void main(String[] a) {
        Fruit f = Factory.getInstance("...");
        if (f != null) {
            f.eat();
        }
    }
}

文章来自各大论坛和平台,并非本人原创,但是无奈找不到一个具体来源,故类别上写为原创。侵删。

经验分享 程序员 微信小程序 职场和发展