Spring(2) ------ 依赖注入
spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入。
1、set注入:
采用属性的set方法进行初始化,就成为set注入。
1)给普通字符类型赋值。
public class User{
private String username;
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
}
我们只需要提供属性的set方法,然后去属性文件中去配置好让框架能够找到applicationContext.xml文件的beans标签。标签beans中添加bean标签,指定id,class值,id值不做要求,class值为对象所在的完整路径。bean标签再添加property标签,要求,name值与user类中对应的属性名称一致。value值就是我们要给User类中的username属性赋的值。
<bean id="userAction"class="com.lsz.spring.action.User" >
<span style="white-space:pre"> </span><property name="username" value="admin"></property>
</bean>
2)给对象赋值
同样提供对象的set方法
public class User{
private UserService userservice;
public UserServicegetUserservice() {
returnuser;
}
public void setUserservice(UserService userservice){
this.userservice= userservice;
}
}
配置文件中要增加UserService的bean标签声明及User对象对UserService引用。
<!--对象的声明-->
<bean id="userService" class="com.lsz.spring.service.UserService"></bean>
<bean id="userAction"class="com.lsz.spring.action.User" >
<property name="userservice" ref="userService"></property>
</bean>
这样配置,框架就会将UserService对象注入到User类中。
3)给list集合赋值
同样提供set方法
public class User{
private List<String> username;
public List<String> getUsername() {
return username;
}
publicvoid setUsername(List<String> username) {
this.username= username;
}
}
<bean id="userAction"class="com.lsz.spring.action.User" >
<propertynamepropertyname="username">
<list>
<value>zhang,san</value>
<value>lisi</value>
<value>wangwu</value>
</list>
</property>
</bean>
4)给属性文件中的字段赋值
public class User{
privateProperties props ;
publicProperties getProps() {
returnprops;
}
publicvoid setProps(Properties props) {
this.props= props;
}
}
<bean>
<propertynamepropertyname="props">
<props>
<propkeypropkey="url">jdbc:oracle:thin:@localhost:orl</prop>
<propkeypropkey="driverName">oracle.jdbc.driver.OracleDriver</prop>
<propkeypropkey="username">scott</prop>
<propkeypropkey="password">tiger</prop>
</props>
</property>
</bean>
<prop>标签中的key值是.properties属性文件中的名称
注意:无论给什么赋值,配置文件中的<property>标签的name属性值一定是和对象中的名称一致。
2、构造方法注入
1)构造方法一个参数
public class User{
private String usercode;
public User(String usecode){
this.usercode = usercode;
}
}
<bean id="userAction"class="com.lsz.spring.action.User">
<constructor-argvalueconstructor-argvalue="admin"></constructor-arg>
</bean>
2)构造函数有两个参数时
当参数为非字符串类型时,在配置文件中需要制定类型,如果不指定类型一律按照字符串类型赋值。
当参数类型不一致时,框架是按照字符串的类型进行查找的因此需要在配置文件中指定是参数的位置
<constructor-argvalueconstructor-argvalue="admin"index="0"></constructor-arg>
.<constructor-argvalueconstructor-argvalue="23" type="int"index="1"></constructor-arg>
这样制定,就是构造函数中,第一个参数为String类型,第二个参数为int类型。
Spring(2) ------ 依赖注入的更多相关文章
- (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)
Spring要把xml配置中bean的属性实例化为具体的bean,"依赖注入"是关卡.所谓的"依赖注入",就是把应用程序对bean的属性依赖都注入到spring ...
- Spring的依赖注入(DI)三种方式
Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个 ...
- spring的依赖注入的最常见的两种方法
package com.lsz.spring.action; public class User { /** * set注入 */ private String username; public vo ...
- 一步一步深入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容器的俩种方式 1.通过XmlObjectFactory创建一个Spring.NET容器 IResour ...
- Spring.NET依赖注入框架学习--简单对象注入
Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...
- Spring.NET依赖注入框架学习--简介
Spring.NET依赖注入框架学习--Spring.NET简介 概述 Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入. ...
- Spring.NET依赖注入框架学习--入门
Spring.NET依赖注入框架学习--入门 在学些Spring.net框架之前,有必要先脑补一点知识,比如什么是依赖注入?IOC又是什么?控制反转又是什么意思?它们与Spring.net又有什么关系 ...
随机推荐
- RAC Concept
1. RAC的高可用性 RAC的高可用性主要包含以下几点: 1> 实现节点间的负载均衡. 2> 实现失败切换的功能. 3> 通过Service组件来控制客户端的访问路径. 4> ...
- php基础教程-变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过变量名访问.在指令式语言中,变量通常是可变的:但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable) ...
- Example of ApplicationContextAware in Spring--转
原文地址:http://www.concretepage.com/spring/example_applicationcontextaware_spring In spring we can get ...
- [Node.js] 使用TypeScript编写Node项目
原文地址:http://www.moye.me/2015/04/25/using_typescript/ 入 TypeScript 坑有一段时间了,由衷的看好,所以决定在自留地絮叨一番. 是什么 Ty ...
- Pillow实现图片对比
在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例.就像功能测试一样,当测试人员做了一些操作之后必然会判断实际结果是否等于预期结果,只不过,这个 ...
- 关于Entity Framework中的Attached报错的完美解决方案终极版
之前发表过一篇文章题为<关于Entity Framework中的Attached报错的完美解决方案>,那篇文章确实能解决单个实体在进行更新.删除时Attached的报错,注意我这里说的单个 ...
- 使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台
使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台. 前面讲解了VSCode开发调试 .NET Core.都只是在windows下运行. .NET Core真正的核心是跨平 ...
- 用webBrowser打开网页出现脚本错误怎么办
当IE浏览器遇到脚本错误时,在浏览器左下角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框.我们在用webBrowser编写的程序打开网页,遇到脚本有问题是,会弹出一个错误 ...
- jquery层级原则器(匹配后代元素div)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 鼠标向下滑动加载div
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...