spring之IOC和DI关系
发布日期:2021-08-22 08:05:44 浏览次数:2 分类:技术文章

本文共 1269 字,大约阅读时间需要 4 分钟。

IOC:控制反转;那么什么是控制反转呢?

对于程序开发人员来说,在没有使用spring之前,我们如果需要某一个对象,那么我们会直接去new这个对象,在程序员的世界里还有一个这样的说法,那就是程序员不需要女朋友,我们都是自己new的,可见new对象在java开发人员心中的分量;但是随着程序复杂性的提高,代码量的增多,我们new出来的对象也越来越多了,这样不但增加了代码量,还增加了类之间的耦合性,不利于程序的维护。而spring的IOC就是帮我们解决这个问题的,我们由之前的new对象的实践者,变成了一个利用对象的开发者,我们不在关心这个对象是怎么new出来的,只要告诉spring的IOC我们需要某一个对象,那么它就会提供我们所需要的。这就像一个中介。也就是说控制对象生命周期的不再是引用它的对象,而是spring,这就叫控制反转。

而IOC和DI:依赖注入的关系就像是java中的接口和实现类的关系;

Ioc是一种思想,而DI就是实现这种思想的操作者,而DI依赖的是java中的反射

IOC的操作:具体的细节参见上面的两篇博客,这里只是做一个总结:

第一:获取类对象

第二:成员变量属性注入:总共有7种输入方法

第三:可以通过application,xml配置文件和java类(加注解的方式),自动配置的三种方式来实现:要搞清楚

注解一:@configuration:该注解的功能就相当于没有添加任何配置文件的application.xml

注解二:@Bean:该注解的功能就相当于在application.xml文件的<bean class="com.sxt.DataSource" id="data"/>;spring容器会自动的为对象赋值;也可以给别名

注解一,二常常搭配使用

@Bean是通过getPerson(以这个类为例)的方法返回一个类对像的。

注解三:@component:该注解的功能是常用于身份不明的组件上

注解四:@service:通常用于service层的

注解五:@Repository:通常用于数据库层的

注解六:@controller:通常用 于controller 层的

这上面的四个都是表示将注解交给spring容器进行管理

注解七:@Autowired:spring容器在实例化的时候会自动为对象赋值;通常使用与上面四个配合使用以获取服务器三层的对象。

注解八:@profile:用于开发环境的切换:可以给别名

注解九:@componentScan:用于替代配置文件的扫描的;这个使用的时候要在后面加上扫描的包:@ComponentScan("com.sxt.bean")

第四:常用的包:core,context,aop,aspects,logging,beans,expression,

 

posted on
2019-01-14 21:57 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/liyunfeng-deng/p/10269293.html

转载地址:https://blog.csdn.net/weixin_33738982/article/details/93323063 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:spring之基本介绍以及老版本框架的下载地址
下一篇:CSS3阴影 box-shadow的使用和技巧总结

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月25日 00时43分19秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java arraylist常用方法_C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)... 2019-04-21
如何实现java文档注释_JavaDoc注释与帮助说明文档 2019-04-21
Java一亿电话号码去重_20 亿个数字在 4G 内存中如何去重排序:快来试一试 BitMap... 2019-04-21
java判断ipv6地址类型_IPv6地址类型与格式 2019-04-21
linux java jdk_linux安装JDK 2019-04-21
java的showcase_java – 如何在Eclipse中导入ShowcaseView? 2019-04-21
JAVA中math的作用_Java中Random 和 Math 的概述及使用(二十六) 2019-04-21
mysql排序rank_MySQL_实现组内排序-Oracle中的rank()函数的功能 2019-04-21
vim自定义html,html - 寻找一种使用VIM在HTML中直接生成漂亮代码段的方法 - 堆栈内存溢出... 2019-04-21
python时间序列因果检验_用python做时间序列预测八:Granger causality test(格兰杰因果检验)... 2019-04-21
python numpy 函数详解_python使用numpy中的size()函数实例用法详解 2019-04-21
java spring上传文件_Java Spring文件上传,Java文件上传,Java通用文件上传 2019-04-21
linux 模拟键盘输入到进程,Linux 下模拟键盘输入 2019-04-21
linux服务器上已安装R 用户下载R包,R语言安装R package的2种方法 2019-04-21
linux 7 磁盘空间太小,Linux下磁盘保留空间的调整,解决df看到的空间和实际磁盘大小不一致的问题... 2019-04-21
linux下mysql 备份方法,Linux下mysql数据库备份方法小结 2019-04-21
bootstrap 页面垂直居中_iframe中如何让layer提示框显示在垂直居中的位置 2019-04-21
肺部ct重建_胸片检查容易漏诊肺癌,去年正常今年晚期常发生,体检一定要做CT... 2019-04-21
3dmax如何拆分模型_3D建模大佬如何制作出惊艳四方的游戏建模,看完这篇文章我知道了... 2019-04-21
x86so文件装换成arm64位_64位系统正式发布说明及介绍!! 2019-04-21