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

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

相关推荐
π大星星️11 分钟前
基于LNMP架构的个人博客系统部署
服务器·架构
程序员曼布12 分钟前
主从架构:技术原理与实现
redis·mysql·架构
Chase_Mos3 小时前
Spring 必会之微服务篇(1)
java·spring·微服务
懵逼的小黑子4 小时前
Django 项目的 models 目录中,__init__.py 文件的作用
后端·python·django
song_ly0015 小时前
深入理解软件测试覆盖率:从概念到实践
笔记·学习·测试
小林学习编程5 小时前
SpringBoot校园失物招领信息平台
java·spring boot·后端
撸码到无法自拔5 小时前
docker常见命令
java·spring cloud·docker·容器·eureka
heart000_16 小时前
IDEA 插件推荐:提升编程效率
java·ide·intellij-idea
DIY机器人工房6 小时前
[6-2] 定时器定时中断&定时器外部时钟 江协科技学习笔记(41个知识点)
笔记·stm32·单片机·学习·江协科技
ŧ榕树先生6 小时前
查看jdk是否安装并且配置成功?(Android studio安装前的准备)
java·jdk