IOC就是控制反转,是指程序将创建对象的控制权转交给Spring框架进行管理,由Spring通过java的反射机制根据配置文件在运行时动态的创建实例,并管理各个实例之间的依赖关系。
对象与对象之间松散耦合,有利于功能的扩展和复用。
DI就是依赖注入,和控制反转是同一个概念的不同角度的描述,它是指程序在运行时由IoC容器来动态注入对象需要的外部依赖。
Spring的IOC有两种注入方式 :xml注入、注解注入。
xml注入bean的几种方式:
- set()方法注入;
- 构造器注入:①通过index设置参数的位置;②通过type设置参数类型;
- 静态工厂注入;
- 实例工厂;
注解注入bean的几种方式:
1、@Autowired是自动注入,自动从spring的上下文找到合适的bean来注入,@Autowired默认按类型匹配注入Bean,自动装配可能存在的问题,一个类型有多个对象,自动装配不知道装配哪个对象
2、@Resource要求提供一个Bean名称的属性,如果属性为空,自动采用标注处的变量名和方法名作为Bean的名称 。@Resource默认按名称匹配注入Bean
3、@Qualifier 指定注入bean的名称
4、@Service,@Controller,@Repository,@Component则是用来修饰类,spring扫描注解配置时,会标记这些类要生成bean。