Spring对IOC的实现,依赖注入之p命名空间注入

学习spring要点之IOC控制反转的实现依赖注入

还是先入门,简单实现下p命名空间注入

p命名空间是简化setter方法注入的

先简单说明下什么是p命名空间的两个前提

1、需要在xml配置文件头部添加信息:

2、p命名空间注入是基于setter方法的,所以需要对应的属性提供setter方法。
简单实现下

首先pom依赖是spring context依赖,junit依赖

<dependencies>
<!-- spring context依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.0-M2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>

接下来就是给一个java类(我这个案例pojo类是在com.spring6.bean)包下的

注意是需要提供setter方法的

public class Dog {
// 简单类型
private String name;
private int age;
// 非简单类型
private Date birth;

// p命名空间注入底层还是set注入,只不过p命名空间注入可以让spring配置变的更加简单。
public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
this.age = age;
}

public void setBirth(Date birth) {
this.birth = birth;
}

@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
", birth=" + birth +
'}';
}
}

然后我们在spring.xml配置文件下进行配置(配置文件在根路径也就是resources目录下)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<!-- 第一步:在spring的配置文件头部添加p命名空间 xmlns:p="http://www.springframework.org/schema/p"-->
<!-- 第二步:使用p:属性名 = “属性值”-->

<bean id="dogBean" class="com.spring6.bean.Dog" p:name="小花" p:age="3" p:birth-ref="birthBean"/>
<bean id="birthBean" class="java.util.Date"/>
</beans>

测试类

@Test
public void testP(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-p.xml");
Dog dogBean = applicationContext.getBean("dogBean", Dog.class);
System.out.println(dogBean);
}

测试结果

成功给属性赋值

 

 
 
posted @   编程菜鸟01  阅读(48)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示