Spring : constructor-arg property 注入

《Spring》第十一篇 DI手动注入之使用<constructor-arg>标签 1. 简述与样例 2. 源码解析 3. 构造参数注入时机 4. 装配过程 5. 属性精准映射赋值 依赖注入属于Bean的生命周期的一个很重要的环节,大类可分为使用xml配置和使用注解定义的方式两大类, 也可分为手动注入 和自动注入(现用的最多的方式) 本文重点介绍使用XML实现注入的构造函数注入方式,Spring源码版本是5.0 不管使用哪种方式实现注入,只要是使用了xml配置文件的方式,第一步都需要解析xml配置文件,解析的过程参见另一篇文章《Spring》第九篇 XML配置文件的解析过程 1. 简述 阅读详情

1、说明

   constructor-arg:通过构造函数注入。 
   property:通过setter对应的方法注入。

2、constructor-arg的使用示例

   (1)、Model代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Student {
    private Integer id;
    private String name;
    private List<String> dream;
    private Map<String, Integer> score;
    private boolean graduation;
                                                                                                                                                                           
    public Student() {
                                                                                                                                                                           
    }
                                                                                                                                                                           
    public Student(Integer id, String name, List<String> dream,
            Map<String, Integer> score, boolean graduation) {
        this.id = id;
        this.name = name;
        this.dream = dream;
        this.score = score;
        this.graduation = graduation;
    }
                                                                                                                                                                           
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", dream=" + dream
                + ", score=" + score + ", graduation=" + graduation + "]";
    }
                                                                                                                                                                           
}

 

   (2)、xml配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<bean id="student" class="com.rc.sp.Student">
    <constructor-arg name="id" value="1"/>
    <constructor-arg name="name" value="student"/>
    <constructor-arg name="dream">
        <list>
            <value>soldier</value>
            <value>scientist</value>
            <value>pilot</value>
        </list>
    </constructor-arg>
    <constructor-arg name="score">
        <map>
            <entry key="math" value="90"/>
            <entry key="english" value="85"/>
        </map>
    </constructor-arg>
    <constructor-arg name="graduation" value="false"/>
</bean>

说明:<constructor-arg name="id" value="1"/>也可以改成<constructor-arg index="0" value="1"/>方式;boolean的值既可以用0/1填充,也可以用true/false填充。

 

3、property的使用示例

   (1)、Model代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Teacher {
    private Integer id;
    private String name;
                                                         
    public Integer getId() {
        return id;
    }
                                                         
    public void setId(Integer id) {
        this.id = id;
    }
                                                         
    public String getName() {
        return name;
    }
                                                         
    public void setName(String name) {
        this.name = name;
    }
                                                         
    @Override
    public String toString() {
        return "Teacher [id=" + id + ", name=" + name + "]";
    }
                                                         
}

 

   (2)、xml配置:

1
2
3
4
<bean id="teacher" class="com.rc.sp.Teacher">
    <property name="id" value="1"></property>
    <property name="name" value="teacher"></property>
</bean>

 

4、Test

   (1)、测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
public class Run {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
                                  
        Student student = (Student) context.getBean("student");
        System.out.println(student);
                                  
        Teacher teacher = (Teacher) context.getBean("teacher");
        System.out.println(teacher);
    }
}

 

   (2)、输出结果:

   Student [id=1, name=student, dream=[soldier, scientist, pilot],

       score={math=90, english=85}, graduation=false]

 

   Teacher [id=1, name=teacher]

抖音视频数据抓取 最近经常有人问我抓取抖音视频的数据,问我一些很小白的问题,算法给他也不会用。 还是先抓包,获取需要的接口和参数,相关的算法在其它文章里面有描述。 搜索个视频看看 查看抓的包信息: 可以看到,这里是post请求... 阅读详情

相关推荐

✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub

构建一个带 GPU 支持的深度学习开发镜像;使用 PyTorch 2.5.1(CUDA 12.4)环境;发布并托管 Docker 镜像至 Docker Hub;验证 GPU 环境正常运行!🎉 这将极大提升你的项目部署效率,尤其是在多人协作或跨平台部署场景中。

用大模型重构生活:猫奴程序员的AI智能日常记录 1578

Spring框架中使用<property>和<constructor-arg>的区别及创建List对象的方法

这种方式适用于那些必须在构造函数中定义依赖关系的情况。使用构造函数注入可以确保依赖关系在对象创建时就已经固定下来,这对于那些需要强制性依赖项(即没有默认构造函数)的类非常有用。注入是最常见的依赖注入方式之一。这种方式适用于那些可选的依赖项,或者在对象创建之后可以更改的状态。对于那些可选的依赖项,或者是在对象创建后可以更改的状态,使用。今天在上课和写作业的时候我遇到了一些问题,接下来带大家好好的看一下解决方案。而对于那些必须在构造函数中定义依赖关系的情况,这两种方式各有优缺点,适用于不同的场景。

2201_76019935的博客 725

模电实验室:手把手教你调试共射放大电路静态工作点(避免波形失真)

本文详细介绍了共射放大电路静态工作点的调试方法,帮助避免波形失真问题。从实验准备、电路搭建到静态工作点测量,提供了实用的电阻选值策略和常见波形失真解决方案,适合电子相关专业学生和硬件工程师参考学习。

weixin_42531128的博客 375

Spring的constructor-arg 与property注入

简单来说,constructor-arg 是用在bean装配(wiring)的,通过构造函数来装配bean #直接注入demo对象 <constructor-arg ref="person"/> #直接注入值 <constructor-arg name="name" value="John"/> <constructor-arg name="school" valu...

qq_44028171的博客 378

《UE4游戏开发》之 《查cook资源失败,问题记录》

当项目打包时,cook出错,但是从原始引擎提供的信息中,没有提示具体的那个资源出错,要查到出错资源,还是非常麻烦。 下面就材质cook出错,增加一些日志,方便查找问题做简单记录 材质cook的一个阶段,是收集MaterialShaderMap,如果在这个阶段收集的信息出错,将会在FShaderMapContent::GetOutdatedTypes函数中,因为Shaders指针指向的内存有问题而出错,通过断点发现,FShaderMapContent这个类对象指针为null,而这个类对象的来源于AllMat.

qq_21919621的博客 2580

QT+SOEM主站协议库实战指南—从编译到嵌入式应用

本文提供了一份QT与SOEM开源EtherCAT主站协议库的集成实战指南。详细介绍了在Windows和Linux平台下编译SOEM库的步骤,并讲解了如何将其无缝集成到QT项目中,构建具备实时监控与控制功能的工业上位机应用。内容涵盖从环境搭建、核心协议开发到嵌入式部署与优化的全流程,为开发高性价比、自主可控的工业控制解决方案提供完整路径。

u6v7w8x的博客 437

spring - constructor-arg 的使用

from http://hi.baidu.com/at87958208/item/dbd64575259291460d0a0724  Spring使用spring-beans.dtd文件来定义BeanFactory的XML配置规范。可以在http://www.springframework.org/dtd/spring-beans.dtd找到该dtd文件,当然,Spring的下载文件中也已经

aigoleague的专栏 5万+

FinRL实战:5步搞定股票量化交易策略(附Python代码)

本文详细介绍了如何使用FinRL框架,通过5个步骤构建基于深度强化学习的股票量化交易策略。内容涵盖从环境搭建、数据获取与预处理,到交易环境构建、模型训练(如PPO算法),以及策略回测评估与优化的完整流程,并提供了可运行的Python代码示例,帮助读者快速入门AI驱动的量化交易。

weixin_29062865的博客 626

Spring bean 中 constructor-arg属性

1、说明    constructor-arg:通过构造函数注入。     property:通过setter对应的方法注入。 2、constructor-arg的使用示例    (1)、Model代码: public class Student { private Integer id; private String name; pr

一起进步的博客 6万+

四足机器人机械结构设计:从腿型到驱动的全面解析

本文全面解析了四足机器人机械结构设计的核心要点。资深工程师老张深入探讨了并联腿与串联腿的选型策略、不同腿型布局对稳定性的影响,并详细对比了皮带轮与连杆驱动方式的优劣。文章结合实战经验,强调了足端设计、材料选择及整体结构轻量化等关键细节,为机器人开发者提供了从理论到实践的宝贵指导。

assembly8low的博客 632

Immich vs Nextcloud照片管理实测:自建私有云相册到底选哪个?

本文深度评测了Immich与Nextcloud在私有云相册管理中的表现,涵盖核心功能、性能基准、本土化实践及进阶功能。Immich凭借微服务架构和AI优化在照片管理、移动端体验上表现优异,而Nextcloud则强在生态整合。文章还提供了Docker部署优化和国内网络适配方案,帮助用户根据需求选择最佳方案。

seed的博客 327

【Spring】Spring注册bean时,可以使用constructor-arg和property两种方式进行依赖注入,那么它们有什么区别呢

把学习中的细节问题拿出来单独做一篇文章,当你在学习时有细节问题,代表你已经开始思考了,避免学了忘,忘了学,有过脑子走的东西,当你再次拿起来,会记忆犹新

HXY19的博客 1064

低速信号设计之 LPC 篇

摘要:LPC总线作为服务器低速信号设计的关键技术,在BIOS芯片连接、Super I/O芯片控制和嵌入式管理等方面发挥着重要作用。其采用33MHz时钟频率和4位并行传输机制,理论速率达16.5MB/s。设计时需重点关注布线长度(建议<10cm)、信号完整性(45°走线、合理层间隔离)和过孔优化等要点。典型应用案例表明,通过规范设计可确保在工业控制等复杂环境中稳定工作。LPC总线凭借低成本、低引脚数和良好兼容性,仍是服务器低速外设连接的重要解决方案。

qq_16237389的博客 1164

Spring bean注入之constructor-arg注入和property注入的区别

1、说明 constructor-arg:通过构造函数注入。 property:通过setter对应的方法注入 2、constructor-arg的使用示例 (1)、entity代码: public class Student { private Integer id; private String name; private List<...

Thinkingcao的专栏 2087

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

spring 学习之 bean 的注入方式 property和constructor-arg的使用方式

spring 学习之 bean 的注入方式 property和constructor-arg的使用方式。 bean的注入方式: property 注入是:通过setxx方法注入。 constructor-arg: 是通过构造函数的方式注入。 转载于:https://www.cnblogs.com/suneryong/p/612...

weixin_30566149的博客 259

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring基于XML配置的装配实验(构造、seter方法注入)及bean 中 constructor-arg、property标签使用知识整理

Spring基于XML配置的装配实验 (1)wrh_student.java类包含了Map、Set、List、数组、集合等这些容器,主要用于Spring基于XML配置的装配演示配置 import java.util.List; import java.util.Map; import java.util.Set; public class wrh_Student { private String username; private List<String> hobbies;//list集

qq_45153634的博客 1141

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

spring中DI依赖注入的两种方式set方法注入(property )、构造器注入(constructor-arg)

原生态的方式进行set和构造器的赋值方式在new创建对象时进行属性的赋值。生成构造方法(constructor-arg标签)3.spring配置文件bean.xml。类有属性,创建过程中向属性赋值。

睡不醒的每天 885

Spring 依赖注入的3种方式

在使用spring的功能之前必须要装配好bean,并且建立好他们之间的关系。     Spring中依赖注入有3种方式: 构造器注入 setter注入 接口注入 一、构造器注入 public class Role{ private Long id; private String roleName; private String note; public Role(){ this....

yy的博客 325

Spring配置文件的详细介绍

Spring配置文件的详细解释,set注入,构造注入,bean标签详细解读

weixin_44362089的博客 8943

Spring构造方法注入

构造方法注入: 通过构造方法注入bean的属性值或者依赖的对象,它保证了bean实例在实例化后就可以使用 构造器注入在元素里声明属性 字面值: 可以用字符串表示的值,可以通过元素标签或value属性进行注入 基本的数据类型及其封装类,String等类型都可以采取字面值注入的方式 若字面值包含特殊字符,可以用<![CDATA[]]>把字面值包裹起来 引入其他Bean 组成应用程序的Bea...

Java肖帝的博客 584

Spring bean- constructor-arg和property在xml中的使用示例

Spring - constructor-arg和property的使用示例1.说明2. constructor-arg的使用示例3. property的使用示例4. Test 1.说明 constructor-arg:通过构造函数注入。 property:通过setter对应的方法注入。 2. constructor-arg的使用示例 2.1 model代码 public class Stude...

sixgold的博客 865

Spring - constructor-arg和property的使用示例

1、说明 constructor-arg:通过构造函数注入。 property:通过setter对应的方法注入。 2、constructor-arg的使用示例 (1)、Model代码: public class Student { private Integer id; private String name; private List&amp;amp;amp;amp;lt;String&amp;amp;amp;amp;gt; drea...

GeekLee的博客 1162

Spring(十四):IoC 之解析 <bean> 标签:constructor-arg、property、qualifier

这篇博客,我们来分析constructor-arg、property、<qualifier>三个子元素。 1. constructor-arg 子元素 1.1 示例 举个小栗子,代码如下: public class StudentService { private String name; private Integer age; p...

scofen的博客 933

property和constructor-arg的使用

由于好久没去看spring的东西,以前的知道差不多都忘记了,今天重新学习一下如何使用,以后在慢慢的一个一个知识点的深究。我发现学过的东西还是要记录下来,否则以后又要重新找资料。纯属个人学习笔记。  一:依赖注入的方式    constructor-arg:通过构造函数注入。    property:通过setxx方法注入。  二:constructor-arg的简单使用    j

caomiao2006的专栏 1156

Spring的两种依赖注入方式:setter方法注入与构造方法注入

Spring的两种依赖注入方式:setter注入与构造方法注入,这两种方法的不同主要就是在xml文件下对应使用property和constructor-arg属性, 例如: property属性:(其中name的值为原类中的属性名) constructor-arg属性:(其中index的值为0~n-1,n代表构造函数中的输入参数的数量) 1.setter方法注入    se

loster_Li的博客 9605
上一篇: spring - constructor-arg 的使用
下一篇: spring的普通类中如何取session和request对像
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值