spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入。

1、set注入:

采用属性的set方法进行初始化,就成为set注入。

1)给普通字符类型赋值。

  1. public class User{
  2. private String username;
  3.  
  4. public String getUsername(){
  5. return username;
  6. }
  7. public void setUsername(String username){
  8. this.username = username;
  9. }
  10. }

  我们只需要提供属性的set方法,然后去属性文件中去配置好让框架能够找到applicationContext.xml文件的beans标签。标签beans中添加bean标签,指定id,class值,id值不做要求,class值为对象所在的完整路径。bean标签再添加property标签,要求,name值与user类中对应的属性名称一致。value值就是我们要给User类中的username属性赋的值。

  1. <bean id="userAction"class="com.lsz.spring.action.User" >
  2. <span style="white-space:pre"> </span><property name="username" value="admin"></property>
  3. </bean>

2)给对象赋值

同样提供对象的set方法

  1. public class User{
  2. private UserService userservice;
  3. public UserServicegetUserservice() {
  4. returnuser;
  5. }
  6. public void setUserservice(UserService userservice){
  7. this.userservice= userservice;
  8. }
  9. }

配置文件中要增加UserService的bean标签声明及User对象对UserService引用。

  1. <!--对象的声明-->
  2. <bean id="userService" class="com.lsz.spring.service.UserService"></bean>
  3. <bean id="userAction"class="com.lsz.spring.action.User" >
  4. <property name="userservice" ref="userService"></property>
  5. </bean>

这样配置,框架就会将UserService对象注入到User类中。

3)给list集合赋值

同样提供set方法

  1. public class User{
  2. private List<String> username;
  3. public List<String> getUsername() {
  4. return username;
  5. }
  6. publicvoid setUsername(List<String> username) {
  7. this.username= username;
  8. }
  9. }
  1. <bean id="userAction"class="com.lsz.spring.action.User" >
  2. <propertynamepropertyname="username">
  3. <list>
  4. <value>zhang,san</value>
  5. <value>lisi</value>
  6. <value>wangwu</value>
  7. </list>
  8. </property>
  9. </bean>

4)给属性文件中的字段赋值

  1. public class User{
  2. privateProperties props ;
  3. publicProperties getProps() {
  4. returnprops;
  5. }
  6. publicvoid setProps(Properties props) {
  7. this.props= props;
  8. }
  9. }
  1. <bean>
  2. <propertynamepropertyname="props">
  3. <props>
  4. <propkeypropkey="url">jdbc:oracle:thin:@localhost:orl</prop>
  5. <propkeypropkey="driverName">oracle.jdbc.driver.OracleDriver</prop>
  6. <propkeypropkey="username">scott</prop>
  7. <propkeypropkey="password">tiger</prop>
  8. </props>
  9. </property>
  10. </bean>

<prop>标签中的key值是.properties属性文件中的名称

注意:无论给什么赋值,配置文件中的<property>标签的name属性值一定是和对象中的名称一致。

2、构造方法注入

1)构造方法一个参数

  1. public class User{
  2. private String usercode;
  3. public User(String usecode){
  4. this.usercode = usercode;
  5. }
  6. }
  1. <bean id="userAction"class="com.lsz.spring.action.User">
  2. <constructor-argvalueconstructor-argvalue="admin"></constructor-arg>
  3. </bean>

2)构造函数有两个参数时

  当参数为非字符串类型时,在配置文件中需要制定类型,如果不指定类型一律按照字符串类型赋值。

  当参数类型不一致时,框架是按照字符串的类型进行查找的因此需要在配置文件中指定是参数的位置

  1. <constructor-argvalueconstructor-argvalue="admin"index="0"></constructor-arg>
  2. .<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. 【干货】如何通过OPC自定义接口来实现客户端数据的读取?

    上篇博文分享了我的知识库,被好多人关注,受宠若惊.今天我把我在项目中封装的OPC自定义接口的程序分享一下.下面将会简单简单介绍下OPC DA客户端数据访问,以及搭配整个系统的运行环境. OPC(OLE ...

  2. WebStorm 9 自动编译 SCSS 产出 CSS 和 source maps

    1.  上一节我们学习了Windows下搭建Ruby开发环境,也为这一节的学习做了铺垫.因为本节需要在Ruby环境下安装SASS.详细请见:http://www.cnblogs.com/wind128 ...

  3. apache解析多个域名

    之前搭建了一个网站在这台服务器上,今天心血来潮准备搭建个word press 博客,准备使用二级域名 blog.xdlxb.cn 来解析. 只需要设置httpd.conf 文件就可以了 如下 开启重定 ...

  4. Asp.Net 高性能ORM框架 SqlSugar.ORM 2.8

    3.0最新API: http://www.cnblogs.com/sunkaixuan/p/5911334.html 1.前言/Preface SqlSugar从去年到现在已经一年了,版本从1.0升到 ...

  5. DB表的关系及EF中Fluent API的使用

    现在使用多数的数据库是关系型数据库,那么表与表之间的关系就会显得尤其重要,对于数据的CRUD处理和以后数据的分析有很大的好处.下面是对于数据库中对表关系的理解以及在EF中使用Fluent API来创建 ...

  6. C#控件及常用设计整

    C#控件及常用设计整 1.窗体    1 2.Label 控件    3 3.TextBox 控件    4 4.RichTextBox控件    5 5.NumericUpDown 控件    7 ...

  7. Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.

    调试网站时,异常出现:Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive. S ...

  8. LINQ的First与FirstOrDefault方法和Last与LastOrDefault方法。

    First与FirstOrDefault的方法,均是返回集合中的第一个元素,区别在于如果没有结果,前者(First)会有抛出异常,后者(FirstOrDefault)会返回默认值.Last与LastO ...

  9. 使用HTML.ActionLink实现一个图片链接

    学习ASP.NET MVC 的Razor的语法,尝试把一段普能的图片链接<a ...><img ... />改为HTML.ActionLink实现. 最原始的代码: <a ...

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

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