spring 依赖注入==属性赋值

在spring中给java对象赋值

  • DI :依赖注入(创建对象,并给属性赋值的意思)
DI实现方式有两种
  1. 在spring的配置文件中,使用标签和属性完成,叫做基于xml的DI实现
  2. 使用spring中的注解,完成属性赋值,叫做基于注解的DI实现
DI的语法分类
  1. set注入 (设值注入):spring调用类的set方法,在set方法可以完成属性的赋值【80%人使用】。
  2. 构造注入:spring调用类的构造器,创建对象,在构造中赋值。
spring中对数据类型的定义
  1. 简单数据类型:spring中规定了java中的基础数据类型和String都是简单类型(包括包装类 Integer Double …)
  2. 引用数据类型:Object及其子类。

注入实现

  • set注入【xml方式】:通过set方法注入进行对里面属性的赋值(也叫设值注入)
  • 简单数据类型的set注入(本质上是调用setXxx方法)
<bean id="自己起一个id名" class="全限定类名">
	<properties name="属性名" value="此属性的值">
	<properties name="属性名" value="此属性的值">
	<!--……-->
</bean>
  • 引用数据类型的set注入
<bean id="school02" class="com.yixuexi.test02.School">
	<property name="name" value="北京市第一小学"></property>
	<property name="id" value="2222"></property>
</bean>
<bean id="student02" class="com.yixuexi.test02.Student">
	<property name="id" value="999"></property>
	<property name="name" value="张三"></property>
	<property name="school" ref="school02"></property>
</bean>

把value换成ref,然后后面跟 对应类型对象的id(也就是bean的id)
这样配置,不需要改源代码就能修改对象的属性值

set注入注意事项
  • 类中必须要有set方法
  • 不管是什么值 在value=“都必须在引号内”
  • 比如student类中有一个 setAddress()方法,但是并没有这个address属性,那么在配置文件中这么写 他也会执行,并不会报错,spring找的就是类中的方法,他根据address判断出setAddress() 然后根据他的判断,他去找setAddress()这个方法,然后执行,不管有没有address属性。(只要有set方法 他就能用)

构造注入【xml方式(很少用 理解即可)】

spring调用类的有参数构造方法,在创建对象的同时,在构造方法中给属性赋值
使用 标签 :一个constructor-arg标签表示构造方法中的一个参数

  • name:构造方法的形参名(切记 这是是形参名,一般的形参名都和属性名一致)
  • index:构造方法参数的位置,参数从左往右 , 0 1 2 3
  • value:简单类型的使用value
  • ref:构造方法中的形参类型是引用类型的 放引用数据类型的id名
   <!--通过构造方式注入来给对象属性赋值-->
<bean id="student03" class="com.yixuexi.test03.Student">
    <constructor-arg name="id" value="10"></constructor-arg>
    <constructor-arg name="name" value="张三"></constructor-arg>
    <constructor-arg name="school" ref="school02"></constructor-arg>
</bean>

spring配置文件中也支持${}写法 引用外部配置文件

  1. 在类路径下创建一个bean.properties配置文件
  2. 然后在里面写好值 key=value
  3. 然后在xml里面写上这段代码
<context:property-placeholder location="classpath:bean.properties"/>

4.然后在对象value的地方进行 ${}

<context:property-placeholder location="classpath:bean.properties"/>
<bean id="xm" class="com.yixuexi.test.Student">
	<properties name="name" value="${name}">
	<properties name="age" value="${age}">
	<!--……-->
</bean>

下一篇更新:spring中引用类型的自动注入,多个配置文件规则

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值