当前位置: 首页 > news >正文

JavaEE简单示例——依赖注入

简单介绍:

首先我们要知道,依赖注入就是赋值,带着这句话去理解依赖注入就非常的简单了,将文中所有的依赖注入全部脑部替换成给属性赋值,再去理解依赖注入的概念。

依赖注入(DI)是指IoC容器在运行期间动态地将某种依赖资源注入到对象中。依赖注入地基本思想是,明确地定义组件接口,独立开发各个组件,然后根据组件地依赖关系组装运行。

依赖注入(DI)和控制反转(IoC)是从不同角度来描述了同一件事情。依赖注入是从应用程序地角度描述,而控制反转是从IoC容器角度描述。

使用方法:

依赖注入有两种类型,一种是构造方法地方式,一种是使用setter地方式。这两种方式其实就是对应了给属性赋值地两种方式,那么我们就针对这两种方式去详细地介绍一下这两种方式地区别和使用方式。

代码实现:

构造方法地方式:<constructor-arg>

我们继续打开之前我们创建的项目,这个项目估计我们要用很长时间,所以一定要保留好。然后我们修改一下Spring的Bean管理XML配置文件:

使用构造方法的方式创建对象,使用的标签就是使用<constructor-age>标签,name属性是要复制的属性值,value属性是用来给基本数据类型赋值,ref用来给引用数据类型赋值,为了验证这个方法确实是使用了构造方法的方式进行依赖注入,我们在构造方法里输出一句话:

 

如果我们在创建对象的时候输出了这句话,那么就可以说明确实是试用了构造方法的方式创建了对象,接下来,我们就来到测试类进行测试。

很好,确实跟我们之前想的一样,输出了我们在构造方法里的输出语句,并且也创建出了我们的对象。 

使用setter地方式:<property>

使用setter的方式创建对象和我们之前演示的效果是一样的,只不过把<constructor-age>标签换成了<property>标签:

同样的,我们在setter方法里写入一句话,如果这句话被输出了,那么就说明我们是使用setter方法进行依赖注入:

然后我们进入测试类进行测试:

 很合理,跟我们之前说的一样,确实是输出了我们在setter方法里输出的语句,使用setter进行依赖注入是比较流行的方式,这种方式更直观的看出我们的属性和值的对应关系。

关于使用setter方式进行依赖注入的时候的name的值:

在使用setter的方式进行依赖注入的时候,我们name属性对应的值并不是属性值,而是setter方法去掉关键字之后并将第一个字母变成小写之后的值,也就是说对应的其实是setter的方法名,只不过我们自动生成的标准的setter方法是使用set关键字和属性名组合的方式,所以如果是使用标准的方法生成的setter方法其实这个地方就可以写属性名,但是我们要知道这个地方的本质是什么。

注意点:

其实说白了,依赖注入就是给对象类的属性赋值的方式,在之后,我们还会学习基于注解的开发方式,无论到了什么时候Spring的依赖注入的含义都相当于是赋值,只不过这个赋值的动作是在程序运行中由Spring去管理,动态得进行赋值,而不需要我们去管理。

http://www.lryc.cn/news/35719.html

相关文章:

  • 大数据框架之Hive: 第7章 综合案例练习(初级)
  • kafka:linux 安装 kafka集群
  • springboot实现Hessian协议的RPC服务
  • 2-6 SpringCloud快速开发入门: Eureka 服务注册中心发现与消费服务
  • Java-Web之s2-001与CommonsCollections
  • 【JavaSE】数组的定义和使用(下)
  • Oracle 实现对全局错误语句的审计监控 ORA- alert
  • React解决样式冲突问题的方法
  • Go项目(用户操作微服务)
  • Spring Boot统一功能处理
  • ETCD多次出现CONTEXT DEADLINE EXCEEDED
  • git 提交 多人开发避免冲突
  • 求职复盘:干了四年外包出来,面试5次全挂
  • AXI总线核心解读---基于官方文档
  • 【Linux修炼】15.进程间通信
  • 每天一道大厂SQL题【Day15】微众银行真题实战(五)
  • 如何优化查询大数据量的表
  • 卷麻了,00后Jmeter用的比我还熟练,简直没脸见人......
  • 力扣-树节点
  • MySQL8启动错误“Neither found #innodb_redo subdirectory, nor ib_logfile* files”
  • JVM系列——详细说明Volatile,原子性/可见性,先行发生原则
  • ArcGIS:栅格计算器的运算符和函数详解
  • spring的beanfactory与applicationContext的区别以及继承关系
  • 分享一个 hive on spark 模式下使用 HikariCP 数据库连接池造成的资源泄露问题
  • MySQL 行锁
  • 成为AI架构师的三大能力
  • 博客系统 实现 (前端 + 后端 )代码
  • C语言:如何在cmd命令窗口上玩贪吃蛇游戏
  • Flutter-自定义图标
  • 教学场景应用视频试看预览功能