Spring对IOC的实现,依赖注入之p命名空间注入
1.开闭原则,依赖倒置原则及IOC控制反转2.Spring对IOC的实现,依赖注入之c命名空间注入
3.Spring对IOC的实现,依赖注入之p命名空间注入
4.GoF之工厂模式5.BeanFactory和FactoryBean的区别学习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);
}
测试结果
成功给属性赋值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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工具