常见的依赖注入方法有三种:构造函数注入set方法注入使用P名称空间注入数据、另外说明下注入集合属性

先来说下最常用的那个注入方法吧。

一、set方法注入

顾名思义,就是在类中提供需要注入成员的 set 方法。具体代码如下:

public class AccountServiceImpl{

    private String name;
private Date birthday; public void setName(String name) {
this.name = name;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}

xml中配置

涉及的标签:
property
属性:
name:找的是类中 set 方法后面的部分
ref:给属性赋值是其他 bean 类型的
value:给属性赋值是基本数据类型和 string 类型的
实际开发中,此种方式用的较多。 <bean id="accountService" class="com.AccountServiceImpl">
<property name="name" value="test"></property>
<property name="birthday" ref="now"></property>
</bean>
<bean id="now" class="java.util.Date"></bean>

二、集合属性注入

顾名思义,就是给类中的集合成员传值,它用的也是set方法注入的方式,只不过变量的数据类型都是集合。 我们这里介绍注入数组,List,Set,Map,Properties。具体代码如下:

public class AccountServiceImpl{

    private String[] myStrs;
private List<String> myList;
private Set<String> mySet;
private Map<String, String> myMap;
private Properties myProps; public void setMyStrs(String[] myStrs) {
this.myStrs = myStrs;
} public void setMyList(List<String> myList) {
this.myList = myList;
} public void setMySet(Set<String> mySet) {
this.mySet = mySet;
} public void setMyMap(Map<String, String> myMap) {
this.myMap = myMap;
} public void setMyProps(Properties myProps) {
this.myProps = myProps;
} }

xml的配置

注入集合数据 List 结构的:   array,list,set
Map 结构的 map,entry,props,prop
在注入集合数据时,只要结构相同,标签可以互换 <bean id="accountService" class="com.AccountServiceImpl"> <!--给数组注入数据-->
<property name="myStrs">
<set>
<value>AAA</value>
<value>BBB</value>
</set>
</property>
<!--注入 list 集合数据-->
<property name="myList">
<array>
<value>AAA</value>
<value>BBB</value>
</array>
</property>
<!--注入 set 集合数据-->
<property name="mySet">
<list>
<value>AAA</value>
<value>BBB</value>
</list>
</property>
<!--注入 Map 数据-->
<property name="myMap">
<props>
<prop key="testA">aaa</prop>
<prop key="testB">bbb</prop>
</props>
</property>
<!--注入 properties 数据-->
<property name="myProps">
<map>
<entry key="testA" value="aaa"></entry>
<entry key="testB">
<value>bbb</value>
</entry>
</map>
</property>
</bean>

三、构造函数注入

顾名思义,就是使用类中的构造函数,给成员变量赋值。注意,赋值的操作不是我们自己做的,而是通过配置的方式,让 spring 框架来为我们注入。具体代码如下:

public class AccountServiceImpl{

    private String name;
private Date birthday; public void setName(String name) {
this.name = name;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}

xml的配置

 使用构造函数的方式,给 service 中的属性传值
要求:
类中需要提供一个对应参数列表的构造函数。
涉及的标签: constructor-arg
属性:
index:指定参数在构造函数参数列表的索引位置
type:指定参数在构造函数中的数据类型
name:指定参数在构造函数中的名称 =======上面三个都是找给谁赋值,下面两个指的是赋什么值的============== value:它能赋的值是基本数据类型和 String 类型
ref:它能赋的值是其他 bean 类型,也就是说,必须得是在配置文件中配置过的 bean <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl">
<constructor-arg name="name" value=" 张三 "></constructor-arg>
<constructor-arg name="birthday" ref="now"></constructor-arg>
</bean> <bean id="now" class="java.util.Date"></bean>

四、使用P名称空间注入数据

此种方式是通过在 xml中导入 p名称空间,使用 p:propertyName 来注入数据,它的本质仍然是调用类中的 set 方法实现注入功能。

public class AccountServiceImpl{

    private String name;
private Date birthday; public void setName(String name) {
this.name = name;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}

xml配置

<bean id="accountService"  class="com.itheima.service.impl.AccountServiceImpl4"
p:name="test" p:age="21" p:birthday-ref="now"/> <bean id="now" class="java.util.Date"></bean>

set注入数据的方法比较常用

如果对ioc和依赖注入不明白的,强推一篇知乎好文,读个故事就懂了如何用最简单的方式解释依赖注入?依赖注入是如何实现解耦的?

spring的ioc依赖注入的三种方法(xml方式)的更多相关文章

  1. spring的IOC——依赖注入的两种实现类型

    一.构造器注入: 构造器注入,即通过构造函数完成依赖关系的设定.我们看一下spring的配置文件: <constructor-arg ref="userDao4Oracle" ...

  2. ASP.NET MVC中使用Unity进行依赖注入的三种方式

    在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...

  3. SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式

           于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...

  4. Spring注解依赖注入的三种方式的优缺点以及优先选择

    当我们在使用依赖注入的时候,通常有三种方式: 1.通过构造器来注入: 2.通过setter方法来注入: 3.通过filed变量来注入: 那么他们有什么区别吗?应该选择哪种方式更好? 三种方式的区别小结 ...

  5. SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式

           在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...

  6. 在ASP.NET MVC中使用Unity进行依赖注入的三种方式

    在ASP.NET MVC4中,为了在解开Controller和Model的耦合,我们通常需要在Controller激活系统中引入IoC,用于处理用户请求的 Controller,让Controller ...

  7. Spring IOC 依赖注入的两种方式XML和注解

    依赖注入的原理 依赖注入的方式---XML配置 依赖注入的方式---注解的方式 Spring 它的核心就是IOC和AOP.而IOC中实现Bean注入的实现方式之一就是DI(依赖注入). 一 DI的原理 ...

  8. Spring依赖注入的三种方式

    看过几篇关于Spring依赖注入的文章,自己简单总结了一下,大概有三种方式: 1.自动装配 通过配置applicationContext.xml中的标签的default-autowire属性,或者标签 ...

  9. 学习 IOC 设计模式前必读:依赖注入的三种实现

    一直以来就是越难的东西越值钱! 嘿嘿,这篇博文章转载自:http://www.cnblogs.com/liuhaorain/p/3747470.html 摘要 面向对象设计(OOD)有助于我们开发出高 ...

随机推荐

  1. Algorithms第3章及少量习题

    第三章的主要思想就是DFS.讲了图上的DFS操作,然后讲了各种应用.这章默认图都是用邻接矩阵存的. procedure explore(G, v) Input: G = (V, E) is a gra ...

  2. Redis 机器内核参数优化

    " > /proc/sys/vm/overcommit_memory echo never > /sys/kernel/mm/transparent_hugepage/enabl ...

  3. linux lsof常用方法

    lsof简介 lsof(list open files)是一个列出当前系统打开文件的工具,在linux环境下,任何事物都是以文件形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.系统 ...

  4. 在idea下遇到的问题汇总(间接性更新)

    在idea下遇到的问题汇总(间接性更新) tomcat下的jsp代码问题: 在idea的环境下,遇到jsp代码.符号失效,首先需要考虑到jar包没有引入,情况如图: 这种情况是因为jar包没有导入进去 ...

  5. 没有图片的freemarker下载,备份

    没有图片的freemarker下载,备份 //以下代码也可以使用/* public String exportApproveCase(@PathVariable("proId") ...

  6. swagger使用以及一些注解说明

    @Api:作用于Conntroller类上 value:字段说明 description:描述 tags:分组 (经常用到tags,例如如下,我只是给value,则默认应用了类名) @ApiOpera ...

  7. 1,Java知识储备

    1,关于 . java文件 规定:第一行为 package name; 表示该.java文件属于哪一个包. 一个.java文件中可以有多个类,但是只能有一个public类,并且这个public类必须与 ...

  8. 从0开始学Git——Git的常用配置

    配置user信息 配置user.name和user.email git config --global user.name 'admin' #设置用户名 git config --global use ...

  9. 使用IDEA创建Maven整合SSM

    创建数据库 CREATE DATABASE `ssmbuild`; USE `ssmbuild`; DROP TABLE IF EXISTS `books`; CREATE TABLE `books` ...

  10. python 软件目录规范

      软件目录结构规范 软件开发规范 一.为什么要设计好目录结构? 1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快 ...