spring专题笔记(五):依赖注入--p命名空间注入、c命名空间注入、util命名空间

目录

一、p命名空间注入

二、c命名空间

三、util命名空间,主要是实现配置的复用


本篇文章主要是介绍spring的依赖注入:p命名空间注入、c命名空间注入、util命名空间。详细介绍了具体的配置、实现方式以及注意事项。

一、p命名空间注入

什么是p命名空间注入?其实是一种基于set方法的注入方式(主要是用于简化set注入)

java 复制代码
public class PNameBeanSet {

    private String name;

    private String value;

    private String age;

    public String getName() {
        return name;
    }

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

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getAge() {
        return age;
    }

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

配置:

第一步:在spring的配置文件头部添加p命名空间

xmlns:p="http://www.springframework.org/schema/p"

第二步:使用 p:属性名 = "属性值"

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

    <bean id="PNameBeanSetBean" class="com.linctSpring6.nameBean.PNameBeanSet" p:name="小花" p:value="很漂亮" p:age="18"></bean>

</beans>

二、c命名空间

c命名空间注入办法是基于构造方法注入的,主要是简化构造方法注入

java 复制代码
public class CNameBeanSet {

    private String name;

    private String value;

    private String age;

    public CNameBeanSet(String name, String value, String age) {
        this.name = name;
        this.value = value;
        this.age = age;
    }

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

配置:

第一步:在spring的配置文件头部添加c命名空间

xmlns:c="http://www.springframework.org/schema/c"

第二步:配置bean的注入

方法一:使用 c:_0 = "属性值" 下标方式注入bean

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


    <bean id="CNameBeanSetBean" class="com.linctSpring6.nameBean.CNameBeanSet" c:_0="小花" c:_1="很漂亮" c:_2="18"></bean>



</beans>

方法二:或者使用 c:name = "属性值" 参数名方式

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

    <bean id="CNameBeanSetBean" class="com.linctSpring6.nameBean.CNameBeanSet" c:name="小花" c:value="很漂亮" c:age="18"></bean>




</beans>

三、util命名空间,主要是实现配置的复用

例如当前我们有2个类,需要注入同样一份数据。我们就可以通过util命名空间的注入的方式,注入同一份配置文件的数据。

用法:把我们需要的数据源信息通过注入的方式注入到集合(properties对象)当中

我们定义2个类,myDataSource1 和 myDataSource2

java 复制代码
public class MyDataSource1 {

    private Properties properties;

    public void setProperties(Properties properties) {
        this.properties = properties;
    }
    
}
java 复制代码
public class MyDataSource2 {

    private Properties properties;

    public void setProperties(Properties properties) {
        this.properties = properties;
    }
}

配置文件:实现properties对象数据的复用

第一步:在spring的配置文件头部添加c命名空间

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

以及xml规范约束文件

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

第二步:

配置properties数据源

实例化bean,并在bean中注入配置的properties数据源

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">


    <util:properties id="prpo">
        <prop key="driver">com.mysql.cj.jdbc.Driver</prop>
        <prop key="url">jdbc:mysql://localhost:3306/spring6</prop>
        <prop key="userName">root</prop>
        <prop key="password">123</prop>
    </util:properties>

    <!--数据配置1-->
    <bean id="MyDataSource1Bean" class="com.linctSpring6.nameBean.MyDataSource1" >
        <property name="properties" ref="prop"></property>
    </bean>

    <!--数据配置2-->
    <bean id="MyDataSource2Bean" class="com.linctSpring6.nameBean.MyDataSource2" >
        <property name="properties" ref="prop"></property>
    </bean>


</beans>

util命名空间注入主要是针对于集合,例如这些集合的数据信息需要在好几个类中引入,我们就可以使用util命名空间 。这样的话,就只需要写一遍properties数据源信息,让bean直接引用就可以了

注意:util命名空间注入方式还是基于set方法注入的!

总结:这些命名空间都是为了简化bean的注入,让我们代码更加简洁,编程效率更加高效。

以上就是我对spring根据三种命名空间注入(p、c、util)的理解啦,希望能帮到大家,有问题的地方欢迎大家一起讨论!

后续会不断更新作品,欢迎大家一起讨论学习。❤❤❤

相关推荐
笨拙的老猴子2 分钟前
[特殊字符] Java GC机制详解:G1、ZGC、Shenandoah全面解析与版本演进对比
java·开发语言
枕星而眠27 分钟前
Linux 四大进程/线程同步锁详解:互斥锁、读写锁、条件变量、文件锁
linux·c语言·后端·ubuntu·学习方法
OSwich30 分钟前
【 Godot 4 学习笔记】命名规范
笔记·学习·godot
IT_陈寒32 分钟前
Vite动态导入把我坑惨了,原来要这样用才对
前端·人工智能·后端
砍材农夫33 分钟前
物联网 基于netty构建mqtt协议规范(遗嘱与保留消息)
java·开发语言·物联网·netty
DFT计算杂谈36 分钟前
KPROJ编译教程
java·前端·python·算法·conda
重生之我是Java开发战士1 小时前
【笔试强训】Week5:空调遥控, kotor和气球,走迷宫,主持人调度II,体操队形,二叉树的最大路径和,排序子序列,消减整数
java·算法·动态规划
吃吃今天努力学习了吗1 小时前
【大模型入门学习笔记】常见概念总结
笔记·学习
郑重其事,鹏程万里1 小时前
表达式计算器(mvel2)
java
其实防守也摸鱼1 小时前
软件安全与漏洞--软件安全编码
java·前端·网络·安全·网络安全·web·工具