java之spring之依赖注入
一.DI: Dependency injection; 依赖注入
依赖注入和控制反转是同一个概念的不同说法。
对象的创建依赖于容器。对象属性的设置是由容器来设置。
对象属性的赋值过程称为注入。
二.Spring中如何注入属性:
1.普通属性(String 和 基本数据类型),直接通过 property 设置即可
<bean id="user" class="cn.sxt.vo.User">
<property name="name" value="张三疯"/>
<property name="age" value="22"/>
</bean>
2.数组的设置
<property name="hobbies">
<array>
<value>足球</value>
<value>蓝球</value>
<value>乒乓球</value>
</array>
</property>
3.List 的设置和数组一样
<property name="addreess">
<list>
<value>北京昌平</value>
<value>山西平遥</value>
<value>xxxx</value>
</list>
</property>
或者
<property name="addreess">
<array>
<value>北京昌平</value>
<value>山西平遥</value>
<value>xxxx</value>
</array>
</property>
4. set 集合设置
<property name="books">
<set>
<value>大话设计模式</value>
<value>head.first java</value>
</set>
</property>
5.Map集合设置
<property name="cards">
<map>
<entry key="农业银行">
<value>ABC</value>
</entry>
<entry key="工商银行" value="ICBC"/>
</map>
</property>
6. Properties注入
<property name="appearance">
<props>
<prop key="weight">60kg</prop>
<prop key="height">170cm</prop>
</props>
</property>
7. 对象的注入
<!--
对象的注入 ref引用的是 容器中另外一个对象的标识符
-->
<property name="role" ref="myRole"/>
</bean>
<bean id="myRole" class="cn.sxt.vo.Role">
<property name="id" value="1001"/>
<property name="name" value="管理员"/>
</bean>
8. p 命名空间注入
需要导入头文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
配置
<!-- p-property命名空间的注入 本质是属性,需要为属性提供set方法,只是将属性写bean的属性中 -->
<bean id="r1" class="cn.sxt.vo.Role" p:id="1007" p:name="vip"></bean>
9. c命名空间注入
需要导入头文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
配置
<!-- c-constructor命名空间注入 本质是有参构造方法注入,需要提供对应有参构造方法 -->
<bean id="r2" class="cn.sxt.vo.Role" c:id="1006" c:name="普通会员"></bean>
10. Null 注入
<bean id="r3" class="cn.sxt.vo.Role">
<property name="id" value="10"/>
<property name="name"><null/></property>
</bean>
总结:在 spring 中,属性的注入大体上分为两类;
1.构造器注入
2. Set方法注入
需要注意的是:使用构造器注入时,需要提供对应的构造方法;使用 set 方法注入时,需要提供对应的 set 方法。
java之spring之依赖注入的更多相关文章
- 在ABAP里模拟实现Java Spring的依赖注入
Dependency Injection- 依赖注入,在Java Spring框架中有着广泛地应用.通过依赖注入,我们不必在应用代码里繁琐地初始化依赖的资源,非常方便. 那么ABAP能否从语言层面上也 ...
- (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)
Spring要把xml配置中bean的属性实例化为具体的bean,"依赖注入"是关卡.所谓的"依赖注入",就是把应用程序对bean的属性依赖都注入到spring ...
- Spring的依赖注入(DI)三种方式
Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个 ...
- java控制反转与依赖注入
1.简介 依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性,下面通过一个例子来引入这一概念. 2.案例 1)一般情况下的类耦合 Main.java public clas ...
- 一步一步深入spring(3)--spring的依赖注入方式
对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,sprin ...
- spring的依赖注入是什么意思
最近学习spring框架,对依赖注入有些模糊,遂上网翻阅资料,做了下列总结,原博客为CSDN 南夏的 spring的依赖注入是什么意思,侵删! Spring 能有效地组织J2EE应用各层的对象.不管是 ...
- SpringBoot系列: 理解 Spring 的依赖注入(一)
==============================Spring 的依赖注入==============================对于 Spring 程序, Spring 框架为我们提供 ...
- Spring.NET依赖注入框架学习--简介
Spring.NET依赖注入框架学习--Spring.NET简介 概述 Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入. ...
- Spring.NET依赖注入框架学习--入门
Spring.NET依赖注入框架学习--入门 在学些Spring.net框架之前,有必要先脑补一点知识,比如什么是依赖注入?IOC又是什么?控制反转又是什么意思?它们与Spring.net又有什么关系 ...
随机推荐
- 第一章 Electron介绍 | Electron in Action(中译)
Github 官方地址 代表作: Visual Studio Code Atom - Code editor. Github开源的代码编辑器,Electron起源地 Visual Studio Cod ...
- Android Sensor 架构深入剖析【转】
本文转载自: 1.Android sensor架构 Android4.0系统内置对传感器的支持达13种,它们分别是:加速度传感器 (accelerometer).磁力传感器(magnetic fiel ...
- js判断字符串是否以指定字符串开头或是否包含指定字符串
1. 用js判断一个字符串是否是以某个子字符串开头如:ssss001是否以ssss开头, 可以这样做: 1 2 3 4 5 6 var fdStart = strCode.indexOf(" ...
- numpy的文件存储.npy .npz 文件详解
Numpy能够读写磁盘上的文本数据或二进制数据. 将数组以二进制格式保存到磁盘 np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 ...
- 网页版查看Android源码地址
Android社区 http://www.androidos.net.cn/sourcecode
- chmod: changing permissions of ‘/etc/fstab': Read-only file system
给passwd文件加权限,修改/etc/fstab目录下所有的文件夹属性为可写可读可执行,执行以下命令:chomd 777 /etc/fstab 的时候提示错误: chmod: changing pe ...
- RocketMQ、Kafka、RabbitMQ的对比
RocketMQ 相比于 RabbitMQ.Kafka 具有主要优势特性有: 支持事务型消息(消息发送和DB操作保持两方的最终一致性,RabbitMQ 和Kafka 不支持) 支持结合 RocketM ...
- vue-cli webpack打包开启Gzip 报错—— Cannot find module 'compression-webpack-plugin
异常描述: 复用以前框架,打包的时候报异常提示: Cannot find module 'compression-webpack-plugin" 然后安装插件: npm install -- ...
- Android Studio + opencv开发配置
1 下载Android Studio https://developer.android.com/studio/archive?hl=zh-cn 2 安装Android Studio 安装完成,下载S ...
- zookeeper+Dubbo环境搭建及简单Demo
1 安装zk https://www.cnblogs.com/feifeicui/p/11175502.html 2 安装 dubbo-admin https://www.cnblogs.com/fe ...