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)的理解啦,希望能帮到大家,有问题的地方欢迎大家一起讨论!

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

相关推荐
ThetaarSofVenice15 分钟前
【Spring框架 三】
java·后端·spring
Starshime28 分钟前
【Java】网络套接字
java·开发语言·网络
等什么君!29 分钟前
学习反射(反射的使用,反射的应用场景)
java·开发语言·学习
TT哇31 分钟前
练习题 逆波兰表达式求值
java·开发语言
小麦加油呀43 分钟前
一款轻量级的开源笔记服务软件
笔记·开源
Little丶Seven1 小时前
Unity Runtime控制编辑器的一些操作
java·unity·编辑器
武子康1 小时前
大数据-255 离线数仓 - Atlas 数据仓库元数据管理 数据血缘关系 元数据
大数据·数据仓库·hive·hadoop·spring
jmoych1 小时前
我在华为的安全日常
大数据·运维·网络·安全·华为·架构·云计算
m0_749317521 小时前
蓝桥杯练习生第四天
java·算法·职场和发展·矩阵·蓝桥杯