Spring的Setter注入(简单数据类型、引用数据类型、集合数据类型)

Spring中的依赖注入、setter与构造器注入、自动装配与集合注入详细描述及使用(XML版中篇) 💖异常处理与解决方案详解上篇💖异常处理与解决方案详解下篇💖Math类与System类的常用方法使用💖JavaEE中的静态方法定义、方法重载要求、return作用详解💖List接口的常用方法,精华总结💖JavaEE里面的所有内部类详细介绍与使用💖ArrayList集合中的常用成员方法💖JavaEE中的Stream流的常用方法💖JavaEE中的Stream流知识点使用,精华总结,一文直接上手 ⭐代码演示 ⭐代码演示 ⭐代码演示 ⭐代码演示 ⭐type属性参数适......... 阅读详情

Setter注入:最常用的注入方法,需要在xml配置文件中进行手动的配置.

要求:
对象中的每个属性必须要有setter 方法

如何配置:
需要为对象中的每个属性配置一个"property"标签:

<property name="" />

其中name属性的值为对象中属性的名字.如何给属性注入值时,需要先确定该属性的类型

对象中的属性分为以下三种类型,不同的类型使用不同的注入方式
1):简单数据类型(八大基本类型,String,BigDecimal,Date等). 使用value.
2):引用数据类型. 使用ref.
3):集合数据类型. 使用集合的元素.

代码:
pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>text</groupId>
    <artifactId>Spring02</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>


    <properties>
        <!--
            定义全局变量:变量名为project.spring.version
        -->
        <project.spring.version>5.0.0.RELEASE</project.spring.version>

    </properties>


    <dependencies>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${project.spring.version}</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

    </dependencies>

    <build>

        <!--加载资源文件-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>


    </build>

</project>

App-context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">




    <!--集合数据类型,使用property标签,在双标签中使用各个集合对应的标签-->
    <bean id="collectionBean" class="text.spring._01_setter.CollectionBean">
        <property name="set">
            <set>
               <value>set1</value>
               <value>18</value>
               <value>1000</value>
                <ref bean="person"></ref>
            </set>
        </property>


        <property name="list">
            <list>
                <value>list1</value>
                <value>list2</value>
                <value>list3</value>
            </list>
        </property>


        <property name="array">
            <array>
                <value>array1</value>
                <value>array2</value>
                <value>array3</value>
            </array>

        </property>

        <property name="map">
            <map>
                <entry key="k1" value="v1"></entry>
                <entry key="k2" value="v2"></entry>
                <entry key="k3" value="v3"></entry>
                <!--<entry key="k4" value-ref="person"></entry>-->
            </map>
        </property>

        <property name="prop">
            <props>
                <prop key="p1">v1</prop>
                <prop key="p2">v2</prop>
            </props>
        </property>

    </bean>


    <!--引用数据类型,使用ref引用当前容器当中的对象-->
    <bean id="dog" class="text.spring._01_setter.Dog">
        <property name="name" value="汪汪"/>
    </bean>
    <!--ref:引用当前容器当中的bean-->
    <bean id="person" class="text.spring._01_setter.Person">
        <property name="dog" ref="dog"/>
    </bean>


    <!--简单数据类型-->
    <bean id="employee" class="text.spring._01_setter.Employee">
        <!--
            setter方式注入,本质是在执行对象中的set方法
            Spring容器在注入值时,隐含着类型转换
        -->
        <property name="name" value="rose"/>
        <property name="age" value="20"/>
        <property name="birthday" value="2019/09/03"/>
        <property name="salary" value="1000"/>

    </bean>

</beans>

App.java:

package text.spring._01_setter;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * Created by thinkpad on 2019/9/3.
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class App {


   @Autowired
   private Employee employee;


   @Autowired
   private Person person;


   @Autowired
   private CollectionBean collectionBean;


    @Test
    public void testEmployee() throws Exception {

        System.out.println(employee);
    }


    @Test
    public void testPerson() throws Exception {
        System.out.println(person);
    }


    @Test
    public void testCollectionBean() throws Exception {
        System.out.println(collectionBean);
    }
}

简单数据类型:
Employee.java:

package text.spring._01_setter;

import java.math.BigDecimal;
import java.util.Date;

/**
 * Created by thinkpad on 2019/9/3.
 */

public class Employee {


    private String name;

    private Integer age;

    private Date birthday;

    private BigDecimal salary;


    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public void setSalary(BigDecimal salary) {
        this.salary = salary;
    }

    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                ", salary=" + salary +
                '}';
    }
}

引用数据类型:
Person.java:

package text.spring._01_setter;

/**
 * Created by thinkpad on 2019/9/3.
 */
public class Person {


    private Dog dog;


    public void setDog(Dog dog) {
        this.dog = dog;
    }

    public String toString() {
        return "Person{" +
                "dog=" + dog +
                '}';
    }
}

Dog.java:

package text.spring._01_setter;

/**
 * Created by thinkpad on 2019/9/3.
 */
public class Dog {

    private String name;

    public void setName(String name) {
        this.name = name;
    }


    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                '}';
    }
}

集合数据类型:
CollectionBean.java:

package text.spring._01_setter;

import java.util.*;

/**
 * Created by thinkpad on 2019/9/3.
 */
public class CollectionBean {


    private Set set;

    private List<String> list;

    private String[] array;

    private Map<String, String> map;

    private Properties prop;


    public void setSet(Set set) {
        this.set = set;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public void setArray(String[] array) {
        this.array = array;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }

    public void setProp(Properties prop) {
        this.prop = prop;
    }


    @Override
    public String toString() {
        return "CollectionBean{" +
                "set=" + set +
                ", list=" + list +
                ", array=" + Arrays.toString(array) +
                ", map=" + map +
                ", prop=" + prop +
                '}';
    }
}
qupath再度更新:使用WSInfer进行深度学习 我们在下面提供了一个示例,说明如何使用 WSInfer 创建 WSI 中肿瘤和肿瘤浸润淋巴细胞 (TIL) 的空间图谱,这些图谱被认为在几种癌症中既有预后又有预测意义6,10,11,12.由于 WSI 非常大,因此它们通常被分解为补丁,以使分析变得可行。补丁分类的输出通常是空间分类地图,通常可以跨 WSI 集成,以创建表示该幻灯片的诊断、预测或“分数”的单个输出。在当前的实施中,我们专注于斑块分类的通用任务,该任务广泛用于广泛的病理学应用,具有促进诊断、预后或预测功能的深度学习模型。 阅读详情

相关推荐

永久关闭Windows更新的5种方法

很多家用电脑,如果系统自动更新的话,会变得越来越卡顿,且硬件型号兼容也并不完美。那么我们该如何彻底关闭Win11的自动更新呢?以下准备了5种方法,您可以根据自身实际情况选择合适的方法!

qq_43652793的博客 1万+

通过Setters方式对日期属性及日期格式进行IOC注入

 Spring不直接支持对Date类型的IOC依赖关系的注入,而提供了类似于Struts中的converte一样的属性编辑器,需要程序员自己写相应的类,并将其注册。 本实例中还涉及到Spring中采用多个配置文件,也涉及到对日期格式的注入-------更加灵活 Date属性类: DatePropertyInjection.javapackage com.zh

zhmg860102的专栏 607

【两方演化博弈代码复现】:双方演化博弈的原理、概率博弈仿真、相位图、单个参数灵敏度演化

演化博弈论是研究个体在特定环境中如何通过策略选择与其他个体进行互动的学科。这一理论在生物学、经济学和社会科学等多个领域都有广泛应用。本文将深入探讨双方演化博弈的原理及其过程,并解读一段 MATLAB 代码,展示如何模拟这一过程。

当回首往事的时候,不会因虚度年华而悔恨,也不会因碌碌无为而羞愧。 6200

简单类型的setter注入

这个所谓的简单类型就是这个对象里面还存在着其他的类型,比如说字符串啊int型啊。这时候首先在最底层的对象中使用setter方法注入,然后在配置文件中配置,其他的还是跟以前一样。一共分为。

weixin_44239550的博客 248

C#实战:通过ZPL指令与斑马打印机交互及状态监控全解析

本文全面解析了在C#中通过ZPL指令与斑马打印机进行交互及状态监控的实战方法。文章详细介绍了TCP/IP网络打印和Windows Raw打印两种核心连接方式,并深入讲解了ZPL指令的构建。重点阐述了通过SGD命令和斑马官方SDK实现实时打印状态监控的策略,为工业自动化场景下的可靠打印提供了完整解决方案。

weixin_29294395的博客 117

STM32声源定位:实现声源定位的嵌入式解决方案

通过以上代码,我们可以获取麦克风音频信号样本,并使用交叉相关法计算声源的位置。然而,我可以帮助您解答有关STM32声源定位的问题,提供相关的代码和指导。获取了麦克风音频信号后,我们可以使用信号处理算法来计算声源的位置。该算法通过计算不同麦克风之间的信号延迟来确定声源的方向。首先,我们需要获取每个麦克风的音频信号。声源定位是一项重要的技术,可以帮助我们确定声音的来源位置。在嵌入式系统中,使用STM32微控制器可以实现精确的声源定位。声源定位的基本原理是通过多个麦克风阵列接收到的声音信号来计算声源的位置。

UplKubernetes的博客 2582

setter注入和构造器注入

bean实例在调用无参构造器创建对象后,就要对 bean 对象的属性进行初始化。初始化是由容器自动完成的,称为注入。根据注入方式的不同,分为两类:1.setter注入 2.构造器注入

m0_52951653的博客 5253

deepstream车道线检测自定义插件化,其中要注意pipeline的配置,如果插件位置配置不对,会报input format should be RGBA when using blur-obje

以上代码中,我们先从对象池中获取一个 DsUserMeta 对象,然后使用 get_lane_line_from_frame 函数获取车道线检测结果,并使用 add_lane_line_meta 函数将其添加到 DsUserMeta 对象中。注意,上述代码中的 get_lane_line_from_frame 函数和 add_lane_line_meta 函数需要你自己实现,用于从视频帧中提取车道线检测结果,并将其添加到 DsUserMeta 中。

pvmsmfchcs的博客 690

Setter注入

Setter注入

m0_72963823的博客 1299

OpenClaw 源代码深度分析报告 &如何把企业自有的MCP server 工具集成到OpenClaw里? 怎样通过OpenAI 风格SDK 解析出来OpenClaw的全部的流式输出内容?

项目属性详情名称OpenClaw版本2026.3.2许可证MIT语言最低运行时包管理器pnpm主要仓库},// 注册工具// 工具实现},});// 注册命令" }),});},方面评价模块化设计⭐⭐⭐⭐⭐ 插件架构清晰,扩展性强协议设计⭐⭐⭐⭐⭐ WebSocket 协议完善,支持多种客户端多渠道支持⭐⭐⭐⭐⭐ 20+ 消息通道,覆盖主流平台安全机制⭐⭐⭐⭐ 配对认证、设备签名、权限控制完善本地优先⭐⭐⭐⭐⭐ 数据本地存储,用户完全控制项目属性详情名称OpenClaw版本。

AI天才研究院 941

SO_KEEPALIVE、TCP_KEEPIDLE、TCP_KEEPINTVL、保活包

是一个套接字选项,用于设置是否启用 keepalive 机制。在这段代码中没有涉及到选项的设置。当被设置为非零值时,表示启用 keepalive 机制。keepalive 是一种用于检测连接是否仍然有效的机制。通过定期发送一些特定的探测数据,可以检测到网络连接的异常中断或对端应用程序的崩溃退出。为了避免以上情况,可以启用 keepalive 机制,即使在无数据传输的情况下也定期发送探测数据。如果在一定时间内没有收到对端的响应,就认为连接已经失效,并进行相应的处理。要启用选项,需要使用函数。其中,fd。

m0_46376834的博客 4817

依赖注入 setter注入 构造器注入 依赖自动装配 集合注入

依赖注入 setter注入 构造器注入 依赖自动装配 集合注入

weixin_46140377的博客 1816

想在 Visual Studio Code 里进行 ABAP 开发,需要安装的扩展列表

安装完毕后,我们可以将 SAP 系统配置为 Visual Studio Code 连接的远程文件系统。为了连接到 SAP 系统,需要启用 ABAP 开发工具 (ADT) ICF 节点,这与 SAP Hana Studio 等工具使用的服务相同。打开 SAP GUI 并连接到目标系统,运行事务 SICF,然后激活 ADT_SRV 服务,如下所示。这启用了允许代码编辑器和 IDE 连接到 SAP 系统的服务。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3125

Spring03——DI依赖注入(setter注入、构造器注入、依赖自动配置、集合注入)

DI依赖注入(setter注入、构造器注入、依赖自动配置、集合注入)

后端小白个人学习记录 1431

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Spring中关于Setter方法注入的理解

Setter注入:最常用的注入方法,需要在xml配置文件中进行手动的配置 要求:对象中的每个属性必须有Setter方法 如何配置:需要为对象的每一个属性配置一个property标签 <property name="" value/rel/="> 如何给属性注入值,需要先确定属性的类型 1.简单数据类型: value赋值 2.引用数据类型: ref赋值 3.集合数据类型: 使用集合的元素...

qq_43232869的博客 1357

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

成为Java开发高手:掌握Spring框架的关键技能-DI

IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配。

m0_59230408的博客 4万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring DI注入

Setter注入 1、最常用的注入方法,需要在xml文件中手动配置。 2、要求:需要对象中需要注入值的属性都有setter方法 3、如何配置?   为对象的每个属性配置一个property标签,<property name="" /> 4、对象中的属性分为几种类型,不同的类型需要使用不同的注入方式   1.简单数据类型(八大基本类型,String,BigDecim...

weixin_30278311的博客 89

Spring:DI相关内容(4)

DI相关内容,包括setter注入、构造器注入、自动配置以及集合注入等。

qq_43751200的博客 254

DI相关内容(spring系列持续更新)

IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配。

weixin_65376296的博客 169

Spring之依赖注入的方式

Spring中依赖注入的几种方式

Lyhdreamer的博客 2464

DI依赖注入(setter注入、构造器注入、自动装配、集合注入)

IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配。

coderge's 优快云 Blog. 1003

依赖注入(DI),自动配置,集合注入

向一个类中传入数据有两种方式,普通方法(set),构造器。DI是描述容器中bean与bean之间依赖关系的过程,bean运行需要的数据有两种类型引用类型,简单类型Spring提供两种注入方式setter注入构造器注入两种注入方式又因为注入数据不同分为两种,简单类型数据,引用类型数据。......

cvpatient的博客 448

Spring《三》DI 依赖注入

Spring—— DI 依赖注入

Super algorithm 的博客,技术爱好者。 1591

Spring万字详解DI相关内容,一文掌握DI配置与使用

Spring往期回顾 🍭SSM框架01:Spring的IoC和DI,以及手把手带你创建Spring核心配置文件 🍭SSM框架02:从0-1学习Spring配置文件 🍭为什么要学Spring?学什么?怎么学? 🍭Spring到底是如何来实现IOC和DI?案例解析入门篇 🍭万字详解Spring之IOC全部知识点 今日目标 掌握DI的相关配置与使用 一、DI相关内容 前面我们已经完成了bean相关操作的讲解,接下来就进入第二个大的模块DI依赖注入,首先来介绍下Spring中有哪些注入方式? 我们先来思考

黑马程序员官方博客 739

IoC(DI 依赖注入)的两种方式

简介: DI:Dependency Injection 依赖注入 IoC(依赖注入)的方式,也就是给Spring IoC容器中的bean赋值的方式,简称DI DI有两种方式,接下来将详细解析 第一种方式: Setter方式注入 最常用的注入方法,需要在xml配置文件中进行手动的配置. 要求:对象中的每个属性必须要有setter 方法 如何配置:需要为对象中的每个属性配置一个"pro...

qq_40245464的博客 718

SSM框架 - Spring_day01: 5.DI相关内容

IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配。

tang7mj的博客 773
上一篇: Spring实例化对象方式④.实现FactoryBean接口实例化:实例工厂变种:集成其他框架使用:SqlSessionFactoryBean
下一篇: Spring的构造器注入(了解)
NewBee.Mu
博客等级 码龄8年 602粉丝 379原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值