spring4第4课-ioc控制反转-详解如何注入参数

坚持住,第四天,继续学习spring4.详解如何注入参数

先总结,主要有如下6种:

1,基本类型值;
2,注入 bean;
3,内部 bean;
4,null 值;
5,级联属性;
6,集合类型属性;

详解如下:↓↓↓↓↓

1,基本类型值;(前面第3课的依赖注入的属性注入就是基本类型注入参数,这里不赘述)

    <bean id="people2" class="com.java1234.entity.People">

          <property name="id" value="1"></property>

          <property name="name" value="张三"></property>

           <property name="age" value="11"></property>
    </bean>


2,注入 bean;(第2课也学过,就是bean里面在ref引用另外一个bean,这里不赘述)

bean.xml内容

<bean id="dog1" class="com.java1234.entity.Dog"><property name="name" value="Jack"></property>
</bean>
<bean id="people2" class="com.java1234.entity.People"><property name="id" value="1"></property><property name="name" value="张三"></property><property name="age" value="11"></property><!--这里的dog是People类内定义的1个对象类名,而dog1是文件上面定义过的一个bean --><property name="dog" ref="dog1"></property>  
</bean>

People类的内容:

public class People {private int id;private String name;private int age;private Dog dog;   // 和bean.xml的name的dog一致

。。。。。。。。

}

3,内部 bean;(只能被内部引用,类似java的内部类)

<bean id="people3" class="com.java1234.entity.People"><property name="id" value="1"></property><property name="name" value="张三"></property><property name="age" value="11"></property><property name="dog"> <!--和第2种的差异就是,这里不用ref属性了,使用bean标签定义内部类--><bean class="com.java1234.entity.Dog">    <!--用bean标签 定义内部类--><property name="name" value="Tom"></property></bean></property>
</bean>

4,null 值;(这玩意,用于强制清空默认值,避免隐式逻辑导致的意外行为)

  使用频率较低 , 随便看看跳过吧

当需要为 Bean 属性或构造函数参数赋予 null 值时,使用 null 标签明确指示,避免 Spring 容器尝试注入默认值或抛出异常。

<bean id="people4" class="com.java1234.entity.People"><property name="id" value="1"></property><property name="name" value="张三"></property><property name="age" value="11"></property><property name="dog"><null></null>   <!-- null标签 表示没有dog--></property>
</bean>

目前流行的强制清空默认值的替代处理方式是注解驱动,比如

4.1):使用 @Value 注入 null

@Component  
public class DataService {  @Value("#{null}") // SpEL 显式赋 null  private String customStrategy;  
}  

4.2 条件化 Bean 注入

@Configuration  
public class AppConfig {  @Bean  @ConditionalOnProperty(name = "feature.cache.enabled", havingValue = "false")  public CacheManager cacheManager() {  return null; // 直接返回 null Bean  }  
}  


5,级联属性; (不常用,跳过)
6,集合类型属性; 

三种集合类型List,Set,Map 以及Props(有点类似map,主要用于配置系统参数等),

几种标签写法有差异,熟悉下,用时备查就行

    <bean id="people6" class="com.java1234.entity.People">
        <property name="id" value="1"></property>
        <property name="name" value="张三"></property>
        <property name="age" value="11"></property>
        <property name="dog" ref="dog1"></property>
        <property name="hobbies">  <!-- 设置集合 -->
            <list>
                <value>唱歌</value>
                <value>跳舞</value>
            </list>
        </property>
        <property name="loves">
            <set>
                <value>唱歌2</value>
                <value>跳舞2</value>
            </set>
        </property>
        <property name="works">
            <map>
                <entry>  <!--有key 和 value的键值对-->
                    <key><value>上午</value></key>
                    <value>写代码</value>
                </entry>
                <entry>

                    <key><value>下午</value></key>
                    <value>测试代码</value>
                </entry>
            </map>

        </property>
        <property name="addresses">
            <props>  <!--有key 和 value的键值对-->
                <prop key="address1">aaaaa</prop>
                <prop key="address2">bbbbb</prop>
            </props>
        </property>
    </bean>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cf2067A

原题链接&#xff1a;https://codeforces.com/contest/2067/problem/A 题目背景&#xff1a; 给定x,y&#xff0c;判读是否存在 n 满足S(n) x&#xff0c;S(n 1) y。定义 S(a) 等于 a 的十进制位数之和。 思路&#xff1a; 不难发现一般 n 和 n 1 的位数之和相差为 1&…

微信小程序获取手机号

详细代码 <t-button size"large" theme"primary" variant"outline" data-type"hasCancelBtn" bind:tap"showDialog" block style"display: none;">开放能力按钮 </t-button> <t-dialog id"t-…

AI重构SEO关键词精准定位

内容概要 随着AI技术深度渗透数字营销领域&#xff0c;传统SEO关键词定位模式正经历系统性重构。基于自然语言处理&#xff08;NLP&#xff09;的智能语义分析引擎&#xff0c;可突破传统关键词工具的局限性&#xff0c;通过解析长尾搜索词中的隐含意图与语境关联&#xff0c;…

四足机器人环境监测系统相关问题

一、在设计四足机器人监测与跟踪系统整体架构时&#xff0c;你主要考虑了哪些因素&#xff1f;为什么这样设计以确保系统的高效性与稳定性&#xff1f; 在设计四足机器人监测与跟踪系统整体架构时&#xff0c;主要考虑了传感器兼容性与通信效率、多任务并发处理能力、实时数据…

uniapp 开发安卓app 微信授权获取昵称 头像登录

在manifest.json中配置appid 以及appsecret uni.login({provider: weixin,success: function (loginRes) {console.log(loginRes.authResult);// 获取用户信息uni.getUserInfo({provider: weixin,success: function (infoRes) {console.log(用户昵称为&#xff1a; infoRes.u…

MySQL8.4组复制

https://dev.mysql.com/doc/refman/8.4/en/group-replication.html 1 什么是组复制 组复制主要解决了传统异步复制主机宕机时可能造成主从节点数据不一致问题MySQL Group Replication&#xff0c;简称MGR将原有的gtid复制功能进行可增强&#xff0c;支持单主模式和多主模式组复…

Python后端开发实战:从0到1搭建高可用API服务

引言 Python凭借其简洁的语法和丰富的生态(如Django、Flask、FastAPI等框架),已成为后端开发的主流语言之一。本文将结合一个真实电商API项目,分享从架构设计到部署上线的完整流程,并总结开发过程中常见的坑与最佳实践。 一、实战案例:电商API开发流程 1.1 技术选型 框…

本地部署大模型llm+RAG向量检索问答系统 deepseek chatgpt

项目视频讲解: 本地部署大模型llm+RAG向量检索问答系统 deepseek chatgpt_哔哩哔哩_bilibili 运行结果:

aws instance store 的恢复

1: aws instance store 要在launch instance 才可以创建,而且,通过snapshot 恢复后,instance store 里面的数据会丢失。 下面是创建instance store 的过程,和通过两种方式恢复,发现/etc/fstab 不同的写法,有的不能启动: [root@ip-xx ~]# lsblk NAME MAJ:MIN RM …

React 生命周期与 Hook 理解解析

从生命周期到 Hook&#xff1a;React 组件演进之路 React 组件的本质是管理渲染与副作用的统一体。Class 组件通过生命周期方法实现这一目标&#xff0c;而函数组件则依靠 Hook 系统达成相同效果。 Class 组件生命周期详解 生命周期完整流程 Class 组件生命周期可分为三大阶…

数字孪生技术赋能西门子安贝格工厂:全球智能制造标杆的数字化重构实践

在工业4.0浪潮席卷全球制造业的当下&#xff0c;西门子安贝格电子制造工厂&#xff08;Electronic Works Amberg, EWA&#xff09;凭借数字孪生技术的深度应用&#xff0c;构建起全球制造业数字化转型的典范。这座位于德国巴伐利亚州的“未来工厂”&#xff0c;通过虚实融合的数…

从Homebrew找到openssl.cnf文件并拷贝到Go项目下使用

安装OpenSSL 在 macOS 上下载和安装 OpenSSL 最常见和推荐的方式是使用 Homebrew&#xff0c;这是一个 macOS 缺失的包管理器。 如果您还没有安装 Homebrew&#xff0c;请先安装它。安装 Homebrew 后&#xff0c;安装 OpenSSL 只需要一条命令。 步骤 1&#xff1a;安装 Home…

Qt 的简单示例 -- 地址簿

这个工程里有两个窗口&#xff0c;都是QWidget派生的窗口 主窗口&#xff1a; 1. 运用了布局&#xff0c;按钮控件&#xff0c;单行编辑框&#xff0c;富文本编辑框等窗口部件&#xff1b; 2. 运用了 QMap 类&#xff1b; 3. 实现了点击按钮弹出子窗口的功能&#xff0c;这里子…

kubernate解决 “cni0“ already has an IP address different from 10.244.0.1/24问题

问题 NetworkPlugin cni failed to set up pod “coredns-5d4b4db-jkmnl_kube-system” network: failed to set bridge addr: “cni0” already has an IP address different from 10.244.0.1/24 解决方案 这个问题通常是由于Flannel网络插件残留配置导致的IP地址冲突。以下…

QT+opecv如何更改图片的拍摄路径

如何更改相机拍摄图片的路径 前言&#xff1a;基础夯实&#xff1a;效果展示&#xff1a;实现功能&#xff1a;遇到问题&#xff1a;未解决&#xff1a; 核心代码&#xff1a; 前言&#xff1a; 最近在项目开发中遇到需要让用户更改相机拍摄路径的问题&#xff0c;用户可自己选…

66常用控件_QTableWidget的使用

目录 代码示例:使用QTableWidget Table Widget 使⽤ QTableWidget 表⽰⼀个表格控件. ⼀个表格中包含若⼲⾏, 每⼀⾏⼜包含若⼲列. 表格中的每个单元格, 是⼀个 QTableWidgetItem 对象. QTableWidget 核⼼⽅法 方法说明item(int row, int column)根据行数数列获取指定的…

记一次edu未授权访问漏洞

首先进入该网址是一个登录界面&#xff0c;查看源代码&#xff0c;找到js文件&#xff0c;发现存在js.map前端信息泄露&#xff0c;于是我们进行js还原。 得到前端的一些源代码&#xff0c;以及路由API等&#xff0c;我们就可以通过这个源代码&#xff0c;进行目录遍历&#xf…

MySQL 索引和事务

目录 前言 一、MySQL 索引介绍 1. 索引概述 2. 索引作用 3. 索引的分类 3.1 普通索引 3.2 唯一索引 3.3 主键索引 3.4 组合索引 (最左前缀) 3.5 全文索引 (FULLTEXT) 3.6 创建索引的原则依据 3.7 查看索引 3.8 删除索引 二、MySQL 事务 1. 事务的 ACID 原则 MYS…

HTML实战项目:高考加油和中考加油

设计思路 页面加载后会自动显示高考内容&#xff0c;点击顶部按钮可以切换到中考内容。倒计时会每秒更新&#xff0c;为考生提供实时的备考时间参考。 使用代表希望的蓝色和金色渐变作为主色调 顶部导航栏可切换高考/中考内容 添加动态倒计时功能 设计励志名言卡片和备考小贴…

What is Predictive Maintenance (PdM)? Learn How Industrial IoT Enables PdM

文章大纲 从预防性维护到预测性维护服务的转变传统预防性维护的局限性预测性维护的定义工业物联网(IIoT)如何助力预测性维护预测性维护带来的成本效益实施预测性维护面临的挑战企业转向预测性维护的原因参考文献大家好!今天,让我们一起深入了解一下预测性维护技术。它正在彻…