1.什么是IoC?
我们在java中一般用new 一个对象来创建,这样可以但是要是对象特别多,耦合度太高,修改一处代码,往往要修改很多出相关联的代码,所以我们用IOC,让容器来管理,用的时候就直接拿来。
IOC又叫控制反转,指的是将Bean交给Spring容器来创建(),这是一个设计思想,是一种思想。
· 控制:指的是对象创建(实例化、管理)的权力。
· 反转:控制权交给外部环境(Spring 框架、IoC 容器)。
Bean是什么呢?Bean 代指的就是那些被 IoC 容器所管理的对象。 它可以是个用户类,也可以是个controller,也可以是service(这个大家都懂哈)
2.IOC的实现方式
补充:依赖注入: 指的是通过Spring容器动态的为对象(Bean)的属性赋值,也可以理解为属性注入( 依赖注入是控制反转的另外一种说法,只是从不同的角度描述相同的概念 ,控制反转指的是将对象(Bean)交给Spring容器创建 )
①-基于XML配置的注入:
applicationContext.xml文件下:
以下代码需要写头文件啥的哦
图一(set方法版)
图二(构造方法版)
图一,二中id就是取个名,唯一的就行,class就是引用的哪个类,property这个标签说明是用的set方法,value就是值
scope是作用域,有下面的作用域:
singleton:在Spring的IOC容器中只存在一个实例,o它与IOC容器“几乎”拥有相同的“寿命”。是scope的默认方式。prototype:SpringIOC容器将为每次获取实例的请求创建一个新的实例。 orequest:在一次Http请求中,容器会返回该Bean的同一实例。而对于不同的Http请求则会产生新的Bean实例。当请求结束后,该实例也将会被销毁。 sosession:在一次Session(会话)中,容器会返回Bean的同一实例。对于不同的会话则会创建新的实例。当会话结束后,该实例也将被销毁。
使用:
图三
下面是controller,service,mapper(dao)的使用,用的set方法,构造同理上面
图四
图五
图六
② -基于注解的注入
applicationContext2.xml文件下:
图七
图八
在service,mapper类中我们分别在类上面加入@service,@Repository,同理图八
图九