iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring Bean属性注入的方式有哪些
  • 249
分享到

Spring Bean属性注入的方式有哪些

2023-07-02 08:07:43 249人浏览 安东尼
摘要

这篇文章主要介绍“spring Bean属性注入的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Bean属性注入的方式有哪些”文章能帮助大家解决问题。属性

这篇文章主要介绍“spring Bean属性注入的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Bean属性注入的方式有哪些”文章能帮助大家解决问题。

属性注入概念

Spring 属性注入(DI依赖注入)有两种方式:setter注入构造器注入

这个注入的属性可以是普通属性(基本数据类型与String等),也可以是一个引用数据类型(主要是对象),或者是一个集合(list、map、set等)

下表是属性注入bean标签中常用的元素

元素名称描述
constructor-arg构造器注入。该元素的 index 属性指定构造参数的索引(从 0 开始),type 属性指定构造参数的类型(type也可以不写,spring会自动识别参数的类型)
propertysetter注入。该元素的 name 属性用于指定 Bean 类中相应的属性名(成员变量名) 。
ref<property> 和 <constructor-arg> 的子元索,用于引用指定bean实例,即 <bean> 元素中的 id 或 name 属性。
value<property> 和 <constractor-arg> 的子元素,用于直接指定常量值。

一、构造器注入

先来介绍下构造器注入:Spring通过调用构造方法为成员变量赋值

  • 使用构造函数实现属性注入大致步骤如下:

  • 在类中添加一个有参构造方法,构造方法内的每一个参数代表一个需要注入的属性;

  • 在 Spring 的配置文件中定义Bean;

  • 在 <bean> 元素内使用 <constructor-arg> 元素,对构造函数内的属性进行赋值,Bean 的构造方法内有多少参数,就需要使用多少个 <constructor-arg> 元素。

下面通过示例介绍如何使用构造器注入

示例1

创建员工类Employee和部门类Dept,并添加有参构造方法(关键!)

public class Employee {    //员工编号    private String empNo;    //员工姓名    private String empName;    //部门信息    private Dept dept;    //有参构造方法    public Employee(String empNo, String empName, Dept dept) {        this.empNo = empNo;        this.empName = empName;        this.dept = dept;    }    ----省略toString方法------  }public class Dept {    //部门编号    private String deptNo;    //部门名称    private String deptName;    //有参构造方法    public Dept(String deptNo, String deptName) {        this.deptNo = deptNo;        this.deptName = deptName;    }    ----省略toString方法------}

编写spring配置文件

<!--部门类属性注入--><bean id="dept" class="com.bighorn.pojo.Dept">    <constructor-arg index="0" value="1"/>    <constructor-arg index="1" value="后端组"/></bean><!--员工类属性注入--><bean id="employee" class="com.bighorn.pojo.Employee">    <constructor-arg index="0" value="1"/>    <constructor-arg index="1" value="bighorn"/>    <constructor-arg index="2" ref="dept"/></bean>

编写运行程序

public static void main(String[] args) {    //获取ioc容器    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");    //从容器中获取对象    Employee employee = context.getBean("employee", Employee.class);    System.out.println(employee);}

结果如下图

Spring Bean属性注入的方式有哪些

注意点

spring识别有参构造方法的参数的三种形式:

index识别,案例一就是如此

<bean id="dept" class="com.bighorn.pojo.Dept">    <constructor-arg index="0" value="1"/>    <constructor-arg index="1" value="后端组"/></bean>

name识别,如下

<bean id="dept" class="com.bighorn.pojo.Dept">    <constructor-arg name="deptNo" value="1"/>    <constructor-arg name="deptName" value="后端组"/></bean>

type识别,如下

<bean id="dept" class="com.bighorn.pojo.Dept">    <constructor-arg type="int" value="1"/>    <constructor-arg type="java.lang.String" value="后端组"/></bean>

三种形式各有各的好处和坏处。
以type识别不适合有多个参数类型相同的情况;以index形式识别,如果参数顺序变了又要重改;以name形式识别,如果参数名变了也要重改。总之,都不太利于解耦

二、setter注入

下面来介绍下setter注入:Spring通过调用setter方法为成员变量赋值。

在【Spring学习笔记(二)】提到过,在 Spring 实例化 Bean 时,IoC 容器会先调用默认构造方法实例化 Bean,然后通过反射机制调用这个 Bean 的 setXxx() 方法,将属性值注入到 Bean 中。

使用setter注入实现属性注入大致步骤如下:

  • 在 类中提供一个默认的无参构造方法(在没有带参构造方法的情况下,可省略),并为所有需要注入的属性提供一个 setter 方法

  • 在 Spring 的 XML 配置文件中定义Bean

  • 使用 <property> 元素对各个属性进行赋值。

下面通过示例介绍如何使用setter注入方法

示例2

创建员工类Employee和部门类Dept,与示例一不同的是,需要添加各个成员变量的setter方法,也需要提供一个无参构造方法

public class Employee {    //员工编号    private String empNo;    //员工姓名    private String empName;    //部门信息    private Dept dept;    //无参构造方法,在没有其他带参构造方法的情况下,可以省略    public Employee() {    }       //各个属性的setter方法    public void setEmpNo(int empNo) {        this.empNo = empNo;    }    public void setEmpName(String empName) {        this.empName = empName;    }    public void setDept(Dept dept) {        this.dept = dept;    }    ----省略toString方法------  }public class Dept {    //部门编号    private String deptNo;    //部门名称    private String deptName;    //无参构造方法,在没有其他带参构造方法的情况下,可以省略    public Dept() {    }    //各个属性的setter方法    public void setDeptNo(int deptNo) {        this.deptNo = deptNo;    }    public void setDeptName(String deptName) {        this.deptName = deptName;    }    ----省略toString方法------}

编写spring配置文件

<!--使用 property 元素完成属性注入        name: pojo类中的属性名称        value: 向属性注入的值      --><!--部门类属性注入--><bean id="dept" class="com.bighorn.pojo.Dept">    <property name="deptNo" value="2"/>    <property name="deptName" value="前端组"/></bean><!--员工类属性注入--><bean id="employee" class="com.bighorn.pojo.Employee">    <property name="empNo" value="114514"/>    <property name="empName" value="lzh"/>    <property name="dept" ref="dept"/></bean>

编写运行程序

public static void main(String[] args) {    //获取IoC容器    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");    //从容器中获取对象    Employee employee = context.getBean("employee", Employee.class);    System.out.println(employee);}

结果如下图

Spring Bean属性注入的方式有哪些

三、如何选择注入方式

如果对象在创建的过程中必须要注入指定的参数,则可以使用构造器注入行,因为使用setter注入有概率不进行注入导致null对象出现

如果对象在创建过程中注入的参数可有可无 ,则可以使用setter注入

常用的是setter注入方式,有必要时可以两者结合使用

关于“Spring Bean属性注入的方式有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Spring Bean属性注入的方式有哪些

本文链接: https://www.lsjlt.com/news/340676.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring Bean属性注入的方式有哪些
    这篇文章主要介绍“Spring Bean属性注入的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Bean属性注入的方式有哪些”文章能帮助大家解决问题。属性...
    99+
    2023-07-02
  • spring注入bean的方式有哪些
    Spring注入Bean的方式有以下几种:1. 构造器注入:通过构造器参数来注入依赖的Bean。2. Setter方法注入:通过调用...
    99+
    2023-09-05
    spring bean
  • Spring bean有哪几种注入方式
    这篇文章主要讲解了“Spring bean有哪几种注入方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring bean有哪几种注入方式”吧!目录一、Set方式注入pojo层:xml ...
    99+
    2023-06-20
  • SpringBoot属性注入的方式有哪些
    这篇文章给大家分享的是有关SpringBoot属性注入的方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、@Value注解注入属性SpringBoot默认可以将application.propertie...
    99+
    2023-06-25
  • Spring中获取Bean对象的注入方式有哪些
    本篇内容主要讲解“Spring中获取Bean对象的注入方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring中获取Bean对象的注入方式有哪些”吧!前言获取 bean 对象也叫做对...
    99+
    2023-07-05
  • Spring容器注入bean的方法有哪些
    本文小编为大家详细介绍“Spring容器注入bean的方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring容器注入bean的方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。@Compon...
    99+
    2023-07-05
  • Spring IOC容器的Bean管理基于注解属性注入方式
    目录基于注解方式进行属性注入一、@Autowired1. 添加对象注解2. 在service中注入dao对象3. 创建测试函数测试效果二、@Qualifier三、@Resource1...
    99+
    2024-04-02
  • spring的注入方式有哪些
    Spring的注入方式有三种:1. 构造器注入(Constructor Injection):通过构造方法来注入依赖对象。2. Se...
    99+
    2023-09-27
    spring
  • Spring注入方式有哪些
    本篇内容介绍了“Spring注入方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring的三种注入方式属性(filed)注入这种...
    99+
    2023-06-25
  • Spring 注入static属性值方式
    目录Spring 注入static属性值1. 问题2. 解决方案Spring依赖注入static静态变量相关问题1.Spring不支持依赖注入static静态变量2.Spring如何...
    99+
    2024-04-02
  • Spring 实现给Bean属性注入null值
    目录给Bean属性注入null值Spring注入bean 为null的相关问题问题描述问题描述如何处理?给Bean属性注入null值 空字符串值可以使用<value/>元...
    99+
    2024-04-02
  • Spring IOC注入方式有哪些
    今天小编给大家分享一下Spring IOC注入方式有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Spring IOC三...
    99+
    2023-06-03
  • spring装配bean的方式有哪些
    Spring装配Bean的方式有以下几种:1. 基于XML配置文件:通过在XML配置文件中定义Bean的方式进行装配,可以使用元素定...
    99+
    2023-09-27
    spring bean
  • Spring定义Bean的方式有哪些
    本文小编为大家详细介绍“Spring定义Bean的方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring定义Bean的方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.通过XML的方式来...
    99+
    2023-07-05
  • Spring创建bean的方式有哪些
    这篇文章主要讲解了“Spring创建bean的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring创建bean的方式有哪些”吧!环境Ubuntu 22.04IntelliJ ...
    99+
    2023-07-02
  • spring接口注入的方式有哪些
    Spring接口注入的方式有以下几种: 构造器注入:通过构造函数将依赖注入到目标对象中。 属性注入:通过属性的setter方...
    99+
    2023-10-25
    spring
  • Spring常用的注入方式有哪些
    Spring常用的注入方式有以下几种:1. 构造器注入(Constructor Injection):通过构造器来注入依赖对象。2....
    99+
    2023-08-15
    Spring
  • Spring依赖注入的方式有哪些
    这篇文章主要介绍“Spring依赖注入的方式有哪些”,在日常操作中,相信很多人在Spring依赖注入的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring依赖注入的方式有哪些”的疑惑有所帮助!...
    99+
    2023-07-02
  • Spring IOC的bean声明方式有哪些
    本篇内容主要讲解“Spring IOC的bean声明方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring IOC的bean声明方式有哪些”吧!  Spring简介  Spring...
    99+
    2023-06-02
  • Spring实例化bean的方式有哪些
    这篇文章主要介绍了Spring实例化bean的方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring实例化bean的方式有哪些文章都会有所收获,下面我们一起来看看吧。一、bean实例化&m...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作