详解Spring 两种注入的方式(Set和构造)实例

 更新时间:2017年02月25日 17:12:50   作者:passport_daizi  
本篇文章主要介绍了Spring 两种注入的方式(Set和构造)实例,Spring框架主要提供了Set注入和构造注入两种依赖注入方式。有兴趣的可以了解一下。

依赖注入是指对象之间关系的控制权由应用代码中转到外部容器。Spring框架主要提供了Set注入和构造注入两种依赖注入方式。

1:Set注入指的就是在接受注入的类中定义一个要被注入的类型的一个set方法,并在参数中定义需要注入的元素。Set注入式一种装配Bean属性的直接方法,但Set注入的一个缺点就是它假设了所有的可变属性都可以通过set方法访问到,无法清晰地表示哪些属性是必须的,哪些属性是可选的。

2:构造注入是在接收注入的类中定义一个构造方法,并在构造方法中定义需要注入的参数。构造注入方式的优势是通过构造方法来强制依赖关系。

下面介绍一下两种方式的用法:

一:在Myeclipse中(笔者使用的是Myeclipse10版本)新建一个项目(Java project或者web project都可)

二:右键项目 - MyEclipse - Add Spring Capabilities(添加Spring支持),选择3.0版本并添加引用核心类库,点击下一步。

三:选择新创建一个spring bean 配置文件放到项目src目录下。

四:点击下一步,指定hibernate 配置页,直接默认,点击完成即可。

五:新建类 HelloWorld.Java

package com.xiami.spring; 
 
public class HelloWorld { 
 
  private String str; 
 
  /** 
   * 默认构造方法 
   */ 
  public HelloWorld() { 
  } 
 
  /** 
   * 用来进行构造注入的构造方法 
   * 
   * @param str 
   */ 
  public HelloWorld(String str) { 
    this.str = str; 
  } 
 
  /** 
   * 用来进行Set注入的方法 
   * @param str 
   */ 
  public void setStr(String str) { 
    this.str = str; 
  } 
 
  /** 
   * 输出字符串的方法 
   */ 
  public void sayHello() { 
    System.out.println(str); 
  } 
} 

六:新建测试类Test.java

package com.xiami.spring; 
 
import org.springframework.beans.factory.BeanFactory; 
import org.springframework.beans.factory.xml.XmlBeanFactory; 
import org.springframework.core.io.ClassPathResource; 
 
public class Test { 
 
  /** 
   * @param args 
   */ 
  public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    //载入spring配置文件 
    BeanFactory bFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); 
    HelloWorld helloWorld = (HelloWorld) bFactory.getBean("helloService"); 
    helloWorld.sayHello(); 
  } 
 
} 

七:打开applicationContext.xml文件,进行添加bean配置

以下是两种方式添加bean:

1:采用Set注入方式的Bean类的配置

右击applicationContext.xml的编辑界面 - Spring - new bean 打开Bean向导窗口,填写Bean Id(自定义命名和Test.java中getBean("???")对应。Bean class 选择要注入的HelloWorld类。点击Properties属性选项卡,给该bean新建一个属性。

八:在属性向导窗口填写 Name 对应HelloWorld.java中的属性名称,Spring Type 选择value,type选择String,Value 随便填值。finish 既可。

九:保存applicationContext.xml, 添加bean后,配置文件多了红色标记的部分,读者可以运行Test.java。测试一下。发现hello world字符串已经注入到了str变量上。

<?xml version="1.0" encoding="UTF-8"?> 
<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-3.0.xsd"> 
 
   
  <!-- 使用Set方式注入 --> 
  <!--  
  <span style="color:#ff0000;"><bean id="helloService" class="com.xiami.spring.HelloWorld" 
    abstract="false" lazy-init="default" autowire="default"> 
    <property name="str"> 
      <value type="java.lang.String">hello world</value> 
    </property> 
  </bean></span> 
   --> 
    
   <!-- 使用构造方法方式注入  
   <bean id="helloService" class="com.xiami.spring.HelloWorld" 
    abstract="false" lazy-init="default" autowire="default"> 
    <constructor-arg> 
      <value type="java.lang.String">构造方法注入方式</value> 
    </constructor-arg> 
   </bean> 
   --> 
    
   </beans> 

2:采用构造注入方式的Bean类的配置

在以上Set方式的Bean Wizard(Bean 向导)窗口,不选择Properties选项卡,变为Constructor Args选项卡。并Add 新增一个构造参数。Index和Java Class 不用填写。

十:在增加构造方式bean的时候,之前第一个得先注释或者删除,不允许有多个id相同的bean。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详谈JSON与Javabean转换的几种形式

    详谈JSON与Javabean转换的几种形式

    下面小编就为大家带来一篇详谈JSON与Javabean转换的几种形式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 一文讲透为什么遍历LinkedList要用增强型for循环

    一文讲透为什么遍历LinkedList要用增强型for循环

    这篇文章主要为大家介绍了为什么遍历LinkedList要用增强型for循环的透彻详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java实现多个文档合并输出到一个文档

    Java实现多个文档合并输出到一个文档

    这篇文章主要为大家详细介绍了Java实现多个文档合并输出到一个文档的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • java实现模拟RPG格斗

    java实现模拟RPG格斗

    这篇文章主要介绍了java实现模拟RPG格斗,每个英雄具有以下几个属性:生命值(为0时英雄倒下)、攻击力(每次攻击时扣除对方的生命值点数)、攻击间隔(每次攻击过后都要等待间隔时间才能进行下次攻击首次攻击之前也要先等待间隔时间)简单设置了下吧,小伙伴可以参考下
    2015-03-03
  • SpringBoot @RestControllerAdvice注解对返回值统一封装的处理方法

    SpringBoot @RestControllerAdvice注解对返回值统一封装的处理方法

    这篇文章主要介绍了SpringBoot @RestControllerAdvice注解对返回值统一封装,使用@RestControllerAdvice对响应进行增强,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Mybatis的核心配置文件使用方法

    Mybatis的核心配置文件使用方法

    Mybatis的核心配置文件有两个,一个是全局配置文件,它包含了会深深影响Mybatis行为的设置和属性信息;一个是映射文件,它很简单,让用户能更专注于SQL代码,本文主要介绍了Mybatis的核心配置文件使用方法,感兴趣的可以了解一下
    2023-11-11
  • 详解Spring AOP 实现“切面式”valid校验

    详解Spring AOP 实现“切面式”valid校验

    本篇文章主要介绍了详解Spring AOP 实现“切面式”valid校验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • mybatis-plus QueryWrapper and or 连用并且实现分页

    mybatis-plus QueryWrapper and or 连用并且实现分

    这篇文章主要介绍了mybatis-plus QueryWrapper and or 连用并且实现分页,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 图解程序员必须掌握的Java常用8大排序算法

    图解程序员必须掌握的Java常用8大排序算法

    本文以图片与文字结合的方式讲解了程序员必须掌握的Java常用8大排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序,需要的朋友可以参考下
    2015-07-07
  • idea中maven本地仓库jar包打包失败和无法引用的问题解决

    idea中maven本地仓库jar包打包失败和无法引用的问题解决

    本文主要介绍了idea中maven本地仓库jar包打包失败和无法引用的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06

最新评论