一、构造注入

编写一个User类

public class User {private String name;    //名字private Integer age;    //性别private Date date;      //日期    依赖的对象//通过构造为成员属性进行初始化public User(String name, Integer age, Date date) {this.name = name;this.age = age;this.date = date;}//toString
}

编写bean.xml配置文件,这里需要值得注意的是,当对象中有依赖某一个对象时,配置文件中需要提供依赖对象的bean,通过ref属性来进行引入,达到注入效果。构造注入必须要提供相应的带参构造方法。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 所依赖的bean对象 --><bean id="date" class="java.util.Date"></bean><!-- 构造注入 --><bean id="user" class="com.jack.User"><constructor-arg name="name" value="张三" /><constructor-arg name="age"  value="18" /><constructor-arg name="date" ref="date" /></bean>
</beans>

测试类

public class Test {public static void main(String[] args) {ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:bean.xml");User user = (User) ac.getBean("user");System.out.println(user);}
}

运行结果

二、Set注入

set注入需要对象中提供set方法,因为bean对象初始化时,是通过对象中的setXxx方法来进行初始化的。

我们可以做一个小测试,在setName方法中加一个输出语句

public class User {private String name;    //名字private Integer age;    //性别private Date date;      //日期    依赖的对象public void setName(String name) {System.out.println("真的是调用set方法来进行初始化呢!");this.name = name;}public void setAge(Integer age) {this.age = age;}public void setDate(Date date) {this.date = date;}//toString
}

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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 所依赖的bean对象 --><bean id="date" class="java.util.Date"></bean><!-- set注入 --><bean id="userSet" class="com.jack.User"><property name="name" value="李四" /><property name="age"  value="19" /><property name="date" ref="date" /></bean>
</beans>

测试

   public static void main(String[] args) {ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:bean.xml");User user = (User) ac.getBean("userSet");System.out.println(user);}

运行结果

从结果上看,真的是调用set方法来进行对象的初始化

三、p标签注入

User类和Set注入的User类一样,这里为什么说一样呢?

解释一下:其实p标签注入个人觉得就是set注入,如果把set方法给删掉的话,配置文件就会报错,所以说,p标签注入必须要提供set方法,其实p标签注入就是对set注入的一种封装简化形式!
p标签在配置文件中需要引入:xmlns:p="http://www.springframework.org/schema/p"

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:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 所依赖的bean对象 --><bean id="date" class="java.util.Date"></bean><!-- p标签注入 --><bean id="userP" class="com.jack.User"p:name="王五" p:age="20" p:date-ref="date"></bean>
</beans>

测试

public static void main(String[] args) {ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:bean.xml");User user = (User) ac.getBean("userP");System.out.println(user);}

运行结果

原文链接:https://blog.csdn.net/qq_42137703/article/details/108612826

Spring三种注入方法(set注入、构造方法注入、p标签注入)相关推荐

  1. JDK/Dubbo/Spring 三种 SPI 机制,谁更好?

    点击关注公众号,Java干货及时送达 来源:juejin.cn/post/6950266942875779108 SPI 全称为 Service Provider Interface,是一种服务发现机 ...

  2. JDK/Dubbo/Spring 三种 SPI 机制,谁更好呢?

    JDK/Dubbo/Spring 三种 SPI 机制,谁更好? SPI 全称为 Service Provider Interface,是一种服务发现机制.SPI 的本质是将接口实现类的全限定名配置在文 ...

  3. PHP开发之递归算法的三种实现方法

    递归算法对于任何一个编程人员来说,应该都不陌生.因为递归这个概念,无论是在PHP语言还是Java等其他编程语言中,都是大多数算法的灵魂.对于PHP新手来说,递归算法的实现原理可能不容易理解.但是只要你 ...

  4. 黑马程序员_Java解析网络数据流的三种特殊方法

    Java解析网络数据流的三种特殊方法 Java作为最开放的语言,已越来越受到网络程序员的青睐.但这一青睐族有着同样的经历--曾经都为网络上通信的Java数据格式而烦恼. 笔者也不例外,曾经为此而查阅了 ...

  5. Oracle的join默认为,Oracle中的三种Join方法详解

    这里将为大家介绍Oracle中的三种Join方法,Nested loop join.Sort merge join和Hash join.整理出来以便帮助大家学习. 基本概念 Nested loop j ...

  6. python中保留小数_python保留小数位的三种实现方法

    前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单实用的保留小数位的方法: 方法一:fo ...

  7. oracle hash join outer,CSS_浅谈Oracle中的三种Join方法,基本概念 Nested loop join: Outer - phpStudy...

    浅谈Oracle中的三种Join方法 基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort mer ...

  8. lopa分析_【风险分析方法】HAZOP、LOPA和FMEA三种分析方法,如何做到信息共享?...

    导 读 信息是人们对事物的了解的不确定性的减少或消除,其功能是表征物质客体成分,结构,状态,特性等属性.信息共享的目的在于减少或消除信息源所需的不确定性.石油化工行业由于设备多,生产过程复杂,危险元素 ...

  9. php怎么四舍五入,php 四舍五入的三种实现方法

    这篇文章主要为大家详细介绍了php 四舍五入的三种实现方法,具有一定的参考价值,可以用来参考一下. 对php 四舍五入的三种方法感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! php 四 ...

  10. java map集合遍历方法,Java的Map集合的三种遍历方法

    集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ 1. package com.myTest.MapText; import java.util.Collection; i ...

最新文章

  1. 9、Kubernetes控制器Controller详解
  2. 通过IIS操作修改服务器文件没有权限的解决办法
  3. Apache构建web主机、日志分割及AWStats分析系统
  4. ADO.NET 数据连接查询
  5. 瀑布流布局JavaScript实现
  6. linux运维故障报告,iis7报为应用程序池“xx”提供服务的进程在启动过程中尝试读取配置时报告故障(503错误)处理方法...
  7. 2018年入门python,推荐这样几本好书!
  8. 现代质量管理方法的应用思考和实践
  9. OpenOCD 依赖的deb包
  10. android wear2.0 更新,又一批手表获得Android Wear 2.0更新
  11. 便宜SSL证书申请平台 证书获取方案
  12. java 解决oracle US7ASCII编码,sql查询时
  13. java实现上传文件夹
  14. 输入一个字符,判断其是否为大写字母,如果是,将他转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
  15. 完美实现文字图片水平垂直居中
  16. php获取股市交易日,个股交易日一年多少天?股市交易时间规定
  17. 北工大计算机系保研,2022推荐免试:北京工业大学2021年保研夏令营活动方案汇总...
  18. 解决联想笔记本电脑经常突然休眠的问题
  19. Fri Feb 22 20:22:00 CST 2019字符串型转date
  20. macOS下制作U盘启动盘和安装白苹果教程

热门文章

  1. Java 算法 星际交流
  2. 用js实现一个简单的音乐播放器
  3. 学计算机的可以做哪些适合自己的兼职?
  4. MySQL服务的启动、连接和停止
  5. [IOS] 内购碰见的一个坑 (无法连接到 iTunes Store)
  6. DFS 蜘蛛纸牌(深度解析)
  7. 某软件项目进行到测试阶段,某软件项目已经到了测试阶段,但是由于用户订购的硬件设备没有到货而不能实施测试...
  8. 安卓开发(APP)之智能家电案例教程
  9. 域安全(1)域的基本知识
  10. 快速掌握差分进化算法