一、介绍
管理创建对象和一并处理对象的方法,方便管理框架 官网
![](https://i-blog.csdnimg.cn/blog_migrate/b31f2363d443fe5a628a14ab9ed59e09.png)
二、IoC和DI思想
IoC负责创建对象(Inversion of Control)
DI负责设置属性(Dependency Injection)
两者都是思想
spring是两者的实现
三、使用
添加依赖
新建xml文件
![](https://i-blog.csdnimg.cn/blog_migrate/471e80b3cad8467f1d443420cc596c66.png)
xml文件解释
![](https://i-blog.csdnimg.cn/blog_migrate/7ef10913e05e6c3591871641c55201fb.png)
名词解释
![](https://i-blog.csdnimg.cn/blog_migrate/1fd25e23d88b6d18e52aaa0bd0eac995.png)
配置方式
![](https://i-blog.csdnimg.cn/blog_migrate/1a6a5aa5863da87eaa0e128a0c2ead06.png)
注意
![](https://i-blog.csdnimg.cn/blog_migrate/70426b70ac6ffcc09b26ea8d335caea3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9391e2bb861a3f805047c3020785771e.png)
四、其他细节
spring的xml文件bean标签id属性和name属性区别
获取方式
![](https://i-blog.csdnimg.cn/blog_migrate/4075be20c9959eff81fcb36ac57660f6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/adaeafb38384b5eb55cfdfc358b648b6.png)
原本的样子
![](https://i-blog.csdnimg.cn/blog_migrate/458746ef8470cbe49fc1235ecfbd154d.png)
五、创建事项
spring容器会创建里面所有的配置对象
![](https://i-blog.csdnimg.cn/blog_migrate/d751d95a3a5f7399205f6f310fabd157.png)
工厂模式
![](https://i-blog.csdnimg.cn/blog_migrate/9c7eef0cbd44d5a17d26fac935e80e49.png)
简化配置,需要工厂类实现
![](https://i-blog.csdnimg.cn/blog_migrate/f96b06df8892a086396345f4a2d96324.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6aea0168d65bf7655f204745b712145b.png)
解释
![](https://i-blog.csdnimg.cn/blog_migrate/e1dfac3b0277e8e783b76599716ad7b7.png)
作用域默认单例,多例则配置prototype
![](https://i-blog.csdnimg.cn/blog_migrate/53a62a1606b3c3ca246201584183d265.png)
解释
容器的初始化和销毁
构造器也可以设置值
![](https://i-blog.csdnimg.cn/blog_migrate/739b8af3385376940ba0b7da487ca9a6.png)
六、DI
属性值设置
![](https://i-blog.csdnimg.cn/blog_migrate/53a209c100b4baa80fa80e85a2794099.png)
一、注意DI註解
xml配置和注解配置
![](https://i-blog.csdnimg.cn/blog_migrate/a38e5cd91405f72cb660ad26f0957b5c.png)
二、jdk的DI注解
Resource
![](https://i-blog.csdnimg.cn/blog_migrate/a9c32f28164f48d7fc8750a1998bf4e9.png)
三、IoC注解
Repository
Service
Controller
Component
![](https://i-blog.csdnimg.cn/blog_migrate/e27b8cb18fc0e344a35bd7bcae04af6f.png)
四、控制事务繁琐
动态代理
![](https://i-blog.csdnimg.cn/blog_migrate/5a0c7e3f8ea5cd298c0d4aee94cd7ec5.png)
五、动态代理
需要重复书写实现类和代理类
![](https://i-blog.csdnimg.cn/blog_migrate/7f9cccc7c0400aaf37bb35ee18edd8d9.png)
重复书写的配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/aad3e40fc11670facb57040cf2c6e19e.png)
接口若是增加方法,实现类和代理类需要更改
动态代理
需要实现类的接口和事务管理器
![](https://i-blog.csdnimg.cn/blog_migrate/ec0bc152055ed64fefb5d143d87c4510.png)