Spring 中 C 、P 命名空间就是简化constructor-arg 和 property 标签的,可以进行简单的注入,一些复杂的数据类型还是要使用constructor-arg 和 property 标签。
使用 C 、P 命名空间例子:
- 创建实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
}
- 配置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:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<bean id="user" class="com.cl.pojo.User" p:id="1" p:name="小明"></bean>
<bean id="user01" class="com.cl.pojo.User" c:id="2" c:name="小芳"></bean>
</beans>
- ApplicationContext 获取 bean
public class Test01 {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
User user = (User) applicationContext.getBean("user");
User user1 = (User) applicationContext.getBean("user01");
System.out.println(user);
System.out.println(user1);
}
}
测试结果:
注意点:C、P命名空间不能直接使用,需要导入xml约束!
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"