内容来自《Java Web 程序员面试笔试宝典》

【出现频率】★★★★★ 【学习难度】★★★★☆

答案:依赖注入(Dependency Injection, DI)是指在程序运行过程中,一个对象如果需要调用另一个对象时,无须在代码中创建被调用者,而是依赖于外部的注入,在Spring框架中,就是Spring的IoC容器为调用者提供注入。

Spring常用的依赖注入方式主要有三种:构造器注入、setter方法注入和接口注入。要实现这三种注入方式现在最广泛的做法是通过基于注解@Autowired的自动装配来实现,它默认是根据类型注入。在注解注入流行前是通过XML文件的配置来实现的。下面介绍基于注解@Autowired的具体实现步骤。

1)接口注入:在属性上加注解@Autowired。这是最常用的配置方式。示例如下。

image.png

2)构造器注入:通过将@Autowired注解放在构造器上来完成构造器注入。示例如下。

image.png

在idea中,如果在mybatis的Mapper接口上用的@Mapper注解,这时可能报错,需要加上"required=false"注解。默认required为true,表示须有一个Bean候选者可以注入。

3)setter方法注入:在属性的setter方法上加@Autowired注解来实现注入。示例如下。