【Java】利用命名空间(P、C 和 Util)来简化bean配置

一、前言

在Spring框架中,使用命名空间(P、C和Util)注入可以帮助我们简化配置,提高可读性。

在本文中,我们将深入探讨P、C和Util命名空间的基础用法。


二、内容

2.1 简述

在Spring框架中,P、C和Util命名空间是用来简化配置和提高可读性的工具。简单来说,我们在xml配置文件中设置命名空间后,就可以更加轻松地定义和配置Spring应用程序中的bean。

使用命名空间的目的就是简化配置文件,使其更加易读和易维护(相对的)。

2.2 P 命名空间注入

P命名空间(Property)允许我们通过属性名称来设置bean的属性值,而不需要显式使用<property>元素,目的是简化配置。

(1)前提条件

使用P命名空间进行属性注入的前提条件包括两个。

首先,在XML头部信息中添加P命名空间的配置信息,如下所示:

xml 复制代码
xmlns:p="http://www.springframework.org/schema/p"

其次,P命名空间的注入是基于bean的setter方法的。

因此,需要确保目标bean的属性提供了相应的setter方法,以便Spring可以使用P命名空间将值注入到这些属性中。

(2)示例

比如现在有一个Student类:

那么在配置文件中,我们可以这样写:

可以看到,我们定义了一个名为"student1"的bean,其类型是"com.example.beans.Student",并使用P命名空间来注入两个属性的值:

  • p:name="张三":这将"张三"注入到name属性。
  • p:age="20":这将整数值20注入到age属性。

测试结果如下:

2.3 C 命名空间注入

C命名空间(Constructor)允许我们使用构造函数参数来创建bean,而不需要显式使用<constructor-arg> 标签,也就是简化构造方法注入。

(1)前提条件

使用c命名空间的两个前提条件:

首先需要在配置文件中添加头部信息:

xml 复制代码
xmlns:c="http://www.springframework.org/schema/c"

其次,需要目标类提供构造方法。

(2)示例

c命名空间是依靠构造方法的。

我们来写一个 Student 类:

然后,我们来编写配置文件:

测试结果如下:

2.4 Util命名空间注入

Util命名空间用于配置集合类型(如List、Set、Map等)的bean属性,使配置更加简单(就是配置复用)。在多个bean需要相同的属性配置时,就可以使用Util命名空间注入。

(1)前提条件

使用util命名空间的前提是在spring配置文件头部添加配置信息。

一行是这个:

xml 复制代码
xmlns:util="http://www.springframework.org/schema/util"

另一行是这个:

xml 复制代码
http://www.springframework.org/schema/util/spring-util.xsd"

整体如下:

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"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

</beans>

(2)示例

Util命名空间允许在Spring配置文件中定义属性集合,以便多个bean可以共享相同的属性值。

这里我们来看一个例子。

首先我们有两个数据源的Java类,每个类都有一个Properties属性,而且它们使用了相同的属性集合。

接下来,我们使用Util命名空间来配置这些数据源并共享相同的属性集合。

在配置文件中,我们这样配置:

通过这种方式,我们可以避免在每个bean的配置中重复定义相同的属性值,提高了配置的可维护性和可读性,同时允许多个bean共享相同的属性集合。

三、总结

本文探讨了Spring框架中的P、C和Util命名空间的使用方式和示例。这些命名空间可以显著简化配置文件,使其更加易读和易维护。

通过P命名空间,我们可以轻松注入属性值,通过C命名空间,我们可以更简单地创建带有构造参数的bean,而Util命名空间则允许多个bean共享相同的属性集合,提高了配置的可维护性和可读性。

相关推荐
程序猿DD5 小时前
OctaFuse Gateway 2.15.0:MCP 聚合、向量 Embeddings 与官方目录同步
后端·agent
蛋蛋的就会顺顺的7 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
余槐i8 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
需要8268 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡8 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
凤山老林9 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
伯恩bourne10 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
张彦峰ZYF10 小时前
停顿短不等于延迟低:G1、ZGC 与低延迟服务的目标分野、代价账本与选型标定
后端·回收暂停、应用停止总时长·到达安全点、分配停滞·屏障吃吞吐、并发线程吃核心·并发窗口吃堆余量·分区式靠挑回收集兑现目标·染色指针式不支持压缩引用
silvamux_10 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
pride.li11 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉