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) ------ 依赖注入的更多相关文章

  1. (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)

    Spring要把xml配置中bean的属性实例化为具体的bean,"依赖注入"是关卡.所谓的"依赖注入",就是把应用程序对bean的属性依赖都注入到spring ...

  2. Spring的依赖注入(DI)三种方式

    Spring依赖注入(DI)的三种方式,分别为: 1.  接口注入 2.  Setter方法注入 3.  构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个 ...

  3. spring的依赖注入的最常见的两种方法

    package com.lsz.spring.action; public class User { /** * set注入 */ private String username; public vo ...

  4. 一步一步深入spring(3)--spring的依赖注入方式

    对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,sprin ...

  5. spring的依赖注入是什么意思

    最近学习spring框架,对依赖注入有些模糊,遂上网翻阅资料,做了下列总结,原博客为CSDN 南夏的 spring的依赖注入是什么意思,侵删! Spring 能有效地组织J2EE应用各层的对象.不管是 ...

  6. SpringBoot系列: 理解 Spring 的依赖注入(一)

    ==============================Spring 的依赖注入==============================对于 Spring 程序, Spring 框架为我们提供 ...

  7. Spring.NET依赖注入框架学习--实例化容器常用方法

    Spring.NET依赖注入框架学习---实例化容器常用方法 本篇学习实例化Spring.NET容器的俩种方式 1.通过XmlObjectFactory创建一个Spring.NET容器 IResour ...

  8. Spring.NET依赖注入框架学习--简单对象注入

    Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...

  9. Spring.NET依赖注入框架学习--简介

    Spring.NET依赖注入框架学习--Spring.NET简介 概述 Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入. ...

  10. Spring.NET依赖注入框架学习--入门

    Spring.NET依赖注入框架学习--入门 在学些Spring.net框架之前,有必要先脑补一点知识,比如什么是依赖注入?IOC又是什么?控制反转又是什么意思?它们与Spring.net又有什么关系 ...

随机推荐

  1. SQL中利用DMV进行数据库性能分析

    相信朋友对SQL Server性能调优相关的知识或多或少都有一些了解.虽然说现在NOSQL相关的技术非常的火热,但是RMDB(关系型数据库)与NOSQL是并存的,并且适用在各种的项目中.在一般的企业级 ...

  2. Moon.Orm 5.0其他额外配置的讲解

    <appSettings>其中的配置</appSettings> AUTO_COMPLIE_DIRECTORY_PATH:自动编译model所用的文件夹路径,格式如:C:\ab ...

  3. [python IDE] 舒服的pycharm设置

    个人使用的IDE有国产的ulipad,sublime text 3 ,或者vs集成下的,不过讲到好用跨平台,还真是只有pycharm 写python最舒服,一个是因为有社区版,免费,不存在版权问题,另 ...

  4. 图论 --- spfa + 链式向前星 : 判断是否存在正权回路 poj 1860 : Currency Exchange

    Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 19881   Accepted: 711 ...

  5. 两种CSS3圆环进度条详解

    晚上睡觉之前,我抽了1个多小时,研究了一下圆环进度条,结合从网上查阅的资料,我终于掌握了两种圆环的生成方法. 这次的效果就是单纯的CSS3效果,也没有写具体的JS,等以后有时间在好好整理一下吧~. 第 ...

  6. jQuery Pagination分页插件的使用

    一.引用CSS和JS: <link href="/Content/Plugins/jQuery.Pagination_v2.2/pagination.css" rel=&qu ...

  7. 做10年Windows程序员与做10年Linux程序员的区别

    如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix下面开发10年的程序员水平会差别很大.我写这篇文章 ...

  8. (转)Android 系统 root 破解原理分析

    现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...

  9. iOS6.0下获取通讯录用户列表

    自iOS6.0后获取通讯录列表需要询问用户,经过用户同意后才可以获取通讯录用户列表.而且ABAddressBookRef的初始化工作也由ABAddressBookCreate函数转变为ABAddres ...

  10. [mysql] 查看mysql执行时间

    mysql的 profiling不是默认打开的 查看profiling是否找开 mysql> show variables like "%pro%"; +---------- ...