spring之基于p命名c命名空间的注入

news2025/7/29 14:11:24

文章目录

  • 前言
  • 一、p命名空间
    • 1.1、编写一个普通的Java类
    • 1.2、spring配置文件
    • 1.3、测试
    • 1.4、运行结果
  • 二、c命名空间
    • 2.1、编写一个普通的Java类
    • 2.2、spring配置文件
    • 2.3、测试
    • 2.4、运行结果
  • 总结


前言

P命名空间注入:
目的:简化set方法注入
使用p命名空间注入的前提条件包括两个:

  • 在XML头部信息中添加p命名空间的配置信息:xmlns:p=“http://www.springframeworl.org/schema/p”
  • p命名空间注入是基于setter方法的,所以需要对应的属性提供set方法

c命名空间注入:
目的:简化构造方法
使用c命名空间注入的前提条件包括两个:

  • 在XML头部信息中添加p命名空间的配置信息:xmlns:c=“http://www.springframeworl.org/schema/c”
  • c命名空间注入是基于构造方法的,所以需要提供构造方法

一、p命名空间

1.1、编写一个普通的Java类

public class Dog {
    //简单类型
    private String name;
    private int age;
    //非简单类型
    private Date birth;

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

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

    public void setBirth(Date birth) {
        this.birth = birth;
    }

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

1.2、spring配置文件

spring配置文件:spring-p.xml
第一步:在spring的配置文件头部添加p命名空间,xmlns:p=“http://www.springframework.org/schema/p”
第二步:使用 p:属性名

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


    <!--
        第一步:在spring的配置文件头部添加p命名空间,xmlns:p="http://www.springframework.org/schema/p"
        第二步:使用 p:属性名
    -->
    <bean id="dogBean" class="com.powernode.spring6.bean.Dog" p:name="小陈" p:age="3" p:birth-ref="birthBean"></bean>
    <!--这里获取的是当前系统时间-->
    <bean id="birthBean" class="java.util.Date"></bean>
</beans>

1.3、测试

测试类:

    @Test
    public void testSpringP(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-p.xml");
        Dog dog = applicationContext.getBean("dogBean", Dog.class);
        System.out.println(dog);
    }

1.4、运行结果

在这里插入图片描述

二、c命名空间

2.1、编写一个普通的Java类

public class People {
    private String name;
    private int age;
    private boolean sex;

    //c命名空间注入办法是基于构造方法的
    public People(String name, int age, boolean sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "People{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
}

2.2、spring配置文件

spring配置文件:spring-c.xml
第一步:在spring的配置文件头部添加c命名空间,xmlns:c=“http://www.springframework.org/schema/c”
第二步:使用 c:参数名方式
也可以使用c:下标方式

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:c="http://www.springframework.org/schema/c"
       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">
    <!--
        第一步:在spring的配置文件头部添加c命名空间,xmlns:c="http://www.springframework.org/schema/c"
        第二步:使用 c:下标方式  或者 c:参数名方式
    -->
    <bean id="peopleBean" class="com.powernode.spring6.bean.People" c:_0="小花" c:_1="20" c:_2="true"></bean>
</beans>

2.3、测试

测试类:

    @Test
    public void testSpringC(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-c.xml");
        People people = applicationContext.getBean("peopleBean", People.class);
        System.out.println(people);
    }

2.4、运行结果

在这里插入图片描述


总结

p命名空间本质上还是set注入,只不过p命名空间注入可以让spring配置变得更简单
c命名空间是简化构造方法注入的

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

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

相关文章

C++ 哈希表的总结与例题

文章目录CSTL哈希表设计哈希集合设计哈希映射哈希集合例题一&#xff1a;只出现一次的数字例题二&#xff1a;快乐数哈希映射例题一&#xff1a;两数之和例题二&#xff1a;两个列表的最小索引总和例题三&#xff1a;字符串中的第一个唯一字符设置键例题一&#xff1a;字母异位…

安全进阶:虚拟防火墙基础实验

实验拓扑 网络拓扑及IP编址如上图所示&#xff1b; 实验需求 PC2与Server2属于一个敏感的业务&#xff0c;这个业务的流量要求与防火墙上的其他流量完全隔离&#xff0c;使用虚拟防火墙技术实现这个需求&#xff1b; PC2要求能够访问Server2&#xff1b;PC2属于Trust域&#…

Exception in thread “main“ java.lang.UnsupportedOperationException解决办法

1.首先报错UnsupportedOperationException 是因为我们用的是 List<Integer> list1 Arrays.asList(2, 3, 5);这个方式获取的集合,该集合底层没有重写一些方法,所以报错 解决方案 定义新集合接收上一步的数据,然后用新集合来操作就行 package day01;import java.util.A…

元数据管理-解决方案调研二:元数据管理解决方案——Saas/内部解决方案(1)

Saas/内部解决方案 2.1、Data Galaxy 地址&#xff1a;The 360 Data Catalog for datagovernance - DataGalaxy 特点&#xff1a;实现数据治理最佳方式 1、理解业务数据并可以共享通用定义&#xff1b;即由团队成员共同维护定义业务术语词汇的知识库 2、统一企业数据字典&…

DolphinDB Python API 离线安装教程

出于安全考虑&#xff0c;通常生产环境与互联网隔离&#xff0c;因此无法使用 pip install 在线安装 DolphinDB Python API&#xff08;以下简称 Python API&#xff09;。本文介绍如何离线安装 Python API 环境&#xff0c;包括 conda 环境和 wheel 安装两种方式。用户可根据生…

RobotFramework 接口测试实战落地

目前我在负责一个APP的测试工作。在项目中使用 RobotFramework作为工具搭建接口自动化框架&#xff0c;进行接口自动化的工作。 本文将从我个人对接口测试和自动化框架的理解以及RobotFramework在实际项目中落地两个大方面进行讲解。 对接口测试的理解 浅谈接口自动化框架 …

图片批量转为PDF怎么转?这些方法亲测实用

你们平时在整理照片的时候&#xff0c;有把多张图片转为PDF文件的需求吗&#xff1f;我因为工作需要&#xff0c;会拍摄和存储很多照片&#xff0c;而且经常需要将这些照片归类&#xff0c;整合到一个PDF文件中。可能有的小伙伴还不知道多张图片转PDF怎么转&#xff1f;别着急&…

2022全球智慧城市大会 升哲科技:以人为核心推动智慧城市建设

11 月 15 日 至 16 日&#xff0c;“全球智慧城市大会 成都”在成都召开。此次会议主题为“人民 激活 城市”&#xff0c;与“全球智慧城市大会 巴塞罗那”同期举办&#xff0c;采用线上与线下结合模式&#xff0c;链接全球 80 多个国家 600 多座城市参会代表。升哲科技&am…

三冲IPO的思派健康如何承载腾讯的互联网医疗梦?

腾讯在互联网医疗领域的“大将”思派健康10月27日向港交所主板递交第三次上市申请&#xff0c;在2021年8月6日和2022年2月25日两次“折戟”港交所后&#xff0c;此次能否如愿以偿仍未可知。 我国当前正步入老龄化社会&#xff0c;慢性病人口增加&#xff0c;市场对医疗健康方面…

2000年-2020年31省市城乡收入差距泰尔指数

2000年-2020年31省市城乡收入差距泰尔指数 1、来源&#xff1a;统计NJ和各省NJ 2、时间区间为2000-2020年 3、指标包括&#xff1a;居民人均可支配收入、城镇家庭可支配收入、农村家庭可支配收入、总人口、城镇化率、城镇总人口、农村总人口、城镇总收入、农村总收入、总收…

CAS:73342-16-2,Azide-PEG-Hydroxy,N3-PEG-OH,叠氮PEG羟基

化学试剂叠氮-聚乙二醇-羟基&#xff0c;其英文名为Azide-PEG-Hydroxy&#xff0c;N3-PEG-OH&#xff0c;它所属分类为Azide PEG Hydroxyl PEG。 叠氮PEG羟基的分子量均可定制&#xff0c;有&#xff1a;叠氮-PEG 3400-羟基、N3-PEG 2000-OH、N3-PEG 1000-OH、叠氮-聚乙二醇 1…

17.Redis系列之快照RDB方式持久化

本文学习redis两大持久化技术之一&#xff1a;RDB&#xff08;redis database&#xff09;快照方式持久化备份与还原&#xff0c;以及RDB方式的优缺点 1. RDB相关配置 首先我们先简单了解下Redis7中RDB相关配置 // save <seconds> <changes> [<seconds> &…

Python理论之一 —— 数据读写

文章目录1. Excel1.1 openpyxl 模块1.1.1 打开表格、读取/获取信息1.1.1.1 打开表格、获取表格内sheet名&#xff1a;1.1.1.2 根据sheet名获取工作表1.1.1.3 获取表格的尺寸大小&#xff1a;尺寸大小指excel表格中的数据有几行几列1.1.1.4 获取表格内某个格子的数据&#xff1a…

电影《扫黑行动》观后感

上周看了电影《扫黑行动》&#xff0c;讲述三年扫黑除恶专项行动中的一个具体事件。 记得前几年&#xff0c;估计你也听过类似新闻&#xff0c;就是大学贷&#xff0c;学生贷等等系列&#xff0c;面向学生的贷款&#xff0c;借钱的人明知道&#xff0c;学生一般是没有偿还能力的…

在家每次开门都安心,在外也能芝麻开门——云米AI智能门锁Super 2体验

很多人都遇到过出门忘带钥匙的尴尬&#xff0c;好在如今有了智能门锁这种看家好工具&#xff0c;既可以通过密码、指纹等多种方式轻松开锁&#xff0c;又可以随时通过手机APP来查看异常情况&#xff0c;确实是现在居家必备的好东西。这个月我也把家里大门上不太好用的老锁&…

IPWorks WebSockets Delphi版

IPWorks WebSockets Delphi版 IPWorks WebSocket包括一组功能强大的组件&#xff0c;用于将WebSocket通信功能集成到Web、桌面和移动应用程序中。这些组件非常适合构建需要实时数据的Web连接应用程序&#xff0c;包括聊天、多人游戏、实时金融应用程序等。 IPWorks WebSockets功…

Linux18 ---进程和线程、线程实现方法、线程的使用接口、多线程代码实现、线程并发运行

一、进程和线程&#xff1a; 1、进程和线程的相关概念&#xff1a; 进程&#xff1a;是一个正在运行的程序&#xff0c;是个动态的概念。一个进程可以实现多个线程。 线程&#xff1a;是进程内部的一条执行路径或称为执行序列&#xff0c;不同平台下线程的实现机制不相同&am…

基于Android车载系统模块资料

在从事车载Android应用开发前&#xff0c;必须要对汽车座舱的基本结构有一个大体的认知&#xff0c;只有意识到汽车座舱是一种与手机完全不同的架构&#xff0c;才能更好的助力我们日后学习车载Android应用的开发。下面就来介绍一个比较主流的车载操作系统架构。 注意&#xff…

Unity实现一个可扩展的UGUI无限滑动列表控件

采用 缓存池存储布局坐标 实现的一个可横向或纵向滑动的无限滑动列表 Demo展示&#xff1a; 功能支持&#xff1a; 可以满足大部分如背包&#xff0c;商店商城&#xff0c;工具栏&#xff0c;任务栏窗口等列表功能 支持整个列表刷新或单个对象刷新支持横向多行滑动&#xff…

【Python】快速入门

目录 基础储备 Python输出&#xff1a; Python换行&#xff1a; Python命名规则&#xff1a; Python变量: Python运算&#xff1a; Python注释&#xff1a; 小点&#xff1a; Python的两种模式&#xff1a; Python的用户问答互动程序&#xff1a; Python条件语句 P…