依赖注入是控制反转的基础
2.控制反转(IOC):简写自Inversion of Control,那么,何为反转?在以前,对象的创建由自己把控(通过new()方式),使用完之后也是自己去销毁,这样就导致对象始终会与其他类耦合在一起;那么现在,有了Spring IOC,一个专门帮我们创建对象的容器,当我们需要某个对象时,不再需要自己动手去创建,而只需要告诉Spring IOC容器:我需要创建xxx对象,然后Spring就会帮我们创建好。组件对象的控制权由程序代码本身转移到了外部容器------这就是所谓的反转。
如何实现反转呢?这就要要说到依赖注入了。
3.依赖注入(DI)简写自 Dependency Injection。依赖注入具体是怎么实现的呢,我所学习到的有这么三种方式:
(1)构造器注入顾名思义,就是通过构造器方法来实现依赖的注入,想要完成注入,我们还要配置xml文件,当然光靠说可能还无法理解,真要搞懂还得靠代码:
package com.atxx.demo.entity;
public class Student{
private String name;
public Student(String name){
this.name=name;
}
}
然后,我们在xml里面配置这个bean
(2)属性注入/setter注入
通过setter方式注入我们需要在实体类中写出属性的setter()方法
package com.atxx.demo.entity;
public class Student {
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
添加setter方法之后,要再xml配置文件中声明
在这个xml文件中,我们相当于给实体类的属性赋了值,通过给property的name属性赋值,Spring就会通过id所对应类中的set方法,给类中属性赋值。这样我们就完成了属性注入。
(3)自动装配使用注解
package com.atxx.demo.entity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Student{
@Autowired
private String name;
}
1.面使用的是@Autowired,在使用@Autowired注解之前需要在Spring配置文件进行配置,即手动配置了bean或者在类上添加了@Component注解。
2.@Autowired可以配合@Qualifier使用,使用注解@Qualifier可以指定要装配组件的id
3.另外,关于@Autowired,我们要清楚:@Autowired默认使用byType来装配属性,如果匹配到类型的多个实例,再通过byName来确定bean,自动装配如果找不到组件就会报NoSuchBeanDefinitionException,如果要允许null 值,可以使用@Autowired(required=false),来指定一个不存在的组件
也可以只用@Resource来完成自动装配,它默认按名称装配,只有当找不到与名称匹配的bean才会按照类型来装配注入
希望本文能对你有所帮助,如果有大佬发现有错误,还希望帮我指出来!我即使纠正;或者有朋友能够补充的也可以提出来,大家一起学习,一起进步!



