Spring基础05——Spring依赖注入的三种方式
Spring支持3种依赖注入的方式:属性注入、构造器注入、工厂
1.属性注入
属性注入即通过setter方法注入Bean的属性或依赖的对象。使用<property>元素,使用name属性指定Bean的属性名称,value 属性或<value>子节点指定属性值
,是实际应用当中最常用的注入方式。
- <!--配置Bean-->
- <bean id="helloWorld" class="com.wzy.lesson1.HelloWorld">
- <!--通过setName方法注入-->
- <property name="name" value="Spring"/>
- </bean>
2.构造器注入
通过构造方法注入Bean的属性值或依赖的对象,它保证了Bean实例化后就可以使用。
构造器注入在<constructor-arg>元素里声明属性,<constructor-arg>中没有name属性。
- <!--通过构造方法来配置bean的属性-->
- <bean id="car" class="com.wzy.lesson1.Car">
- <constructor-arg value="Audi" index="0"/>
- <constructor-arg value="ShangHai" index="1"/>
- <constructor-arg value="3000000" index="2"/>
- </bean>
如果构造方法的参数个数相同,并且只指定了参数的顺序没有指定参数的类型,那么容器将无法区分应使用哪个构造器,就会造成错误。
- <!--通过构造方法来配置bean的属性-->
- <bean id="car" class="com.wzy.lesson1.Car">
- <constructor-arg value="Audi" index="0"/>
- <constructor-arg value="ShangHai" index="1"/>
- <constructor-arg value="3000000" index="2"/>
- </bean>
- <!--通过构造方法来配置bean的属性-->
- <bean id="car1" class="com.wzy.lesson1.Car">
- <constructor-arg value="Audi" index="0"/>
- <constructor-arg value="ShangHai" index="1"/>
- <constructor-arg value="200" index="2" />
- </bean>
因为没有指定类型所以容器都使用了,第一个构造方法进行注入,导致本来的maxSpeed属性值注入到price当中
在注入时我们指定注入的参数类型,来避免构造函数重载时,发生这种错误:
- <!--通过构造方法来配置bean的属性-->
- <bean id="car" class="com.wzy.lesson1.Car">
- <constructor-arg value="Audi" index="0" type="java.lang.String"/>
- <constructor-arg value="ShangHai" index="1" type="java.lang.String"/>
- <constructor-arg value="3000000" index="2" type="double"/>
- </bean>
- <!--通过构造方法来配置bean的属性-->
- <bean id="car1" class="com.wzy.lesson1.Car">
- <constructor-arg value="Audi" index="0" type="java.lang.String"/>
- <constructor-arg value="ShangHai" index="1" type="java.lang.String"/>
- <constructor-arg value="200" index="2" type="int"/>
- </bean>
这样我们就可以得到正确的结果:
3.工厂方法注入(很少使用,不推荐)
Spring基础05——Spring依赖注入的三种方式的更多相关文章
- ASP.NET MVC中使用Unity进行依赖注入的三种方式
在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...
- SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式
于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...
- Spring注解依赖注入的三种方式的优缺点以及优先选择
当我们在使用依赖注入的时候,通常有三种方式: 1.通过构造器来注入: 2.通过setter方法来注入: 3.通过filed变量来注入: 那么他们有什么区别吗?应该选择哪种方式更好? 三种方式的区别小结 ...
- SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式
在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...
- Spring依赖注入的三种方式
看过几篇关于Spring依赖注入的文章,自己简单总结了一下,大概有三种方式: 1.自动装配 通过配置applicationContext.xml中的标签的default-autowire属性,或者标签 ...
- spring——依赖注入的三种方式
1 构造器注入(与构造器有直接关系) 默认无参构造 3种构造方式:通过<contructor-arg>调用类中的构造器 下标 <bean id="userService&q ...
- Spring系列4:依赖注入的2种方式
本文内容 基于构造器的依赖注入 基于setter的依赖注入 基于构造器的依赖注入 案例 定义2个简单的bean类,BeanOne 和 BeanTwo,前者依赖后者. package com.crab. ...
- spring4之依赖注入的三种方式
1.Setter注入 <bean id="helloWorld" class="com.jdw.spring.beans.HelloWorld"> ...
- 在ASP.NET MVC中使用Unity进行依赖注入的三种方式
在ASP.NET MVC4中,为了在解开Controller和Model的耦合,我们通常需要在Controller激活系统中引入IoC,用于处理用户请求的 Controller,让Controller ...
随机推荐
- kali文件执行的权限不够解决办法
root@kali:~# ./sql.py bash: ./sql.py: 权限不够 root@kali:~# ./.py Fuzzing PASS with bytes ^CTraceback (m ...
- [CSP-S模拟测试]:简单计算(数学)
题目传送门(内部题104) 输入格式 第一行一个正整数$T$,表示该测试点内的数据组数,你需要对该测试点内的$T$组数据都分别给出正确的答案才能获得该测试点的分数. 接下来$T$组数据,每组数据一行两 ...
- Failed to read artifact descriptor for xxx:jar
在MyEclipse中执行Maven的install命令时,报“Failed to read artifact descriptor for xxx:jar ”的错误.这可能是在下载过程中文件出现错误 ...
- Centos7系统备份与恢复教程
原文地址:https://www.cnblogs.com/fang888/p/8473485.html Centos系统备份与恢复教程 tar: 特点 1.保留权限 2.适合备份整个目录 3.可以选择 ...
- inode节点号
查看分区信息命令 df -Th 查看文件inode节点号 ls -i b.txt 查看系统中与b.txt 的inode节点号相同的所有文件,即硬链接 find / -inum xxxx(b.tx ...
- OpenStack 实现技术分解 (6) 通用库 — oslo_log
目录 目录 前文列表 扩展阅读 日志级别 oslolog 初始化设置 DEMO oslolog 的相关配置项 oslolog 的日志级别 oslolog 的使用技巧 推荐使用 LOGdebug 的地方 ...
- robot framework python3环境下学习笔记(1)——安装robot framework
安装环境:win10 64位,python3.6 1,安装robot framework pip install robotframework 2,安装wxPython pip install wxP ...
- 20191127 Spring Boot官方文档学习(5)
5.Spring Boot Actuator:可投入生产的功能 Spring Boot包含许多其他功能,可帮助您在将应用程序投入生产时监控和管理您的应用程序.您可以选择使用HTTP端点或JMX管理和监 ...
- 解析xml的4种方法详解(转)
http://blog.csdn.net/jzhf2012/article/details/8532873 1. 介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和 ...
- C++基础-类和对象
本文为 C++ 学习笔记,参考<Sams Teach Yourself C++ in One Hour a Day>第 8 版.<C++ Primer>第 5 版.<代码 ...