自学内容网 自学内容网

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

目录

一、p命名空间注入

二、c命名空间

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


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

一、p命名空间注入

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

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 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命名空间注入办法是基于构造方法注入的,主要是简化构造方法注入

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

public class MyDataSource1 {

    private Properties properties;

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

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

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


原文地址:https://blog.csdn.net/ADFVBM/article/details/145272928

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!