目录
本篇文章主要是介绍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)的理解啦,希望能帮到大家,有问题的地方欢迎大家一起讨论!
后续会不断更新作品,欢迎大家一起讨论学习。❤❤❤