Spring初使用:使用Spring为对象的属性赋值

使用spring创建对象的方法可参考:Spring初使用:使用Spring创建对象

为基本类型(及其包装类)属性赋值

先巩固一下有哪些基本数据类型,一共有8类,字符类:char,布尔类:boolean,数值类:byte,short,int,long,float,double,对应包装类分别为:Char,Boolean,Byte,Short,Integer,Long,Float,Double

通过xml配置文件的方式


使用Set方法赋值

创建Student类和各属性Set方法

在这里插入图片描述
创建spring配置文件

在创建对象的 bean 标签中使用 property 标签为属性赋值,一个 property 标签对应一个属性

格式:<property name="属性名" value="属性值"></property>

在这里插入图片描述
测试类测试
在这里插入图片描述
在这里插入图片描述
注意:使用property标签时,spring会默认调用属性的Set方法,如果属性没有Set方法,程序会报错:
在这里插入图片描述

使用有参构造方法赋值


创建Student类和有参构造方法

在这里插入图片描述

创建spring测试文件

在创建对象的 bean 标签中使用 constructor-arg 标签为属性赋值,一个 constructor-arg 标签对应一个属性

格式:
1.<constructor-arg name="构造方法中的形参名" value="形参值"/>
2.<constructor-arg index="构造方法中形参的下标(从0开始)" value="形参值" />
3.<constructor-arg value="形参值" />

格式1:
在这里插入图片描述
格式2:
在这里插入图片描述
格式3:
在这里插入图片描述
测试类测试
在这里插入图片描述
在这里插入图片描述

通过注解的方式


使用 @Value 注解赋值

创建Student类
在这里插入图片描述
添加注解

格式:@Value(属性值),注解写到属性的上面

注意:要使用注解的方式给属性赋值,就要使用注解的方式创建对象(步骤可参考:Spring初使用:使用Spring创建对象)
在这里插入图片描述

创建spring配置文件

在这里插入图片描述

测试类测试
在这里插入图片描述
在这里插入图片描述

为引用类型属性赋值

当我们的对象中有引用类型的属性时,比如我们定义一个 School类和一个 Student类,我们在 Student类中定义一个 School类型的属性 school,我们怎样使用spring为这个school属性赋值呢?

School类
在这里插入图片描述
Student类
在这里插入图片描述

指定赋值


使用Set方法赋值

为属性创建Set方法

School类
在这里插入图片描述

Student类
在这里插入图片描述
创建spring配置文件

在创建对象的 bean 标签中使用 property 标签为引用类型属性赋值,一个property标签对应一个引用类型属性

格式:<property name="引用类型属性名" ref="引用类的对象名"/>

在这里插入图片描述
测试类测试

在这里插入图片描述
在这里插入图片描述
注意:使用property标签时,spring会默认调用属性的Set方法,如果属性没有Set方法,程序会报错:
在这里插入图片描述

使用有参构造方法赋值

School类
在这里插入图片描述
添加有参构造方法

Student类
在这里插入图片描述
创建spring配置文件

在创建对象的 bean 标签中使用 constructor-arg 标签为引用类型属性赋值,一个constructor-arg标签,对应构造方法中的一个形参

格式:<constructor-arg name="构造方法中的形参名" ref="引用类的对象名"/>

在这里插入图片描述
测试类测试

在这里插入图片描述
在这里插入图片描述

自动赋值

自动赋值通过两种方式来选择对象:byName 和 byType

byName是当引用类型属性的属性名和xml配置文件中创建的对象名相同且数据类型和对象数据类型一致时,spring会选择该对象来完成自动赋值

byType可以分为三种情况

1.当引用类型属性的数据类型和xml配置文件中创建的对象数据类型一致时,spring会选择该对象完成自动赋值
2.当引用类型属性的数据类型和xml配置文件中创建的对象数据类型是父类和子类的关系时,spring会选择该对象完成自动赋值
3.当引用类型属性的数据类型和xml配置文件中创建的对象数据类型是接口和实现类的关系时,spring会选择该对象完成自动赋值

使用Set方法自动赋值

byName

创建类及Set方法

School类
在这里插入图片描述
Student类
在这里插入图片描述
创建spring配置文件

格式:<bean id="对象名" class="类的全路径" autowire="byName"></bean>

此时spring会按照byName方式自动从xml文件中选择对象来完成对Student类中school属性的赋值
在这里插入图片描述
测试类测试
在这里插入图片描述
在这里插入图片描述

byType

引用类型属性的数据类型和对象的数据类型相同

创建类及Set方法

School类
在这里插入图片描述
Student类
在这里插入图片描述
创建spring配置文件

格式:<bean id="对象名" class="类的全路径" autowire="byType"></bean>

此时spring会按照byType方式自动从xml文件中选择对象来完成对Student类中school属性的赋值
在这里插入图片描述
测试类测试
在这里插入图片描述

在这里插入图片描述

引用类型属性的数据类型和对象的数据类型为父类和子类关系

创建MiddleSchool类继承School类
在这里插入图片描述
Student类
在这里插入图片描述

创建spring配置文件

此时引用类型属性的数据类型和创建的对象的数据类型为父类和子类关系

在这里插入图片描述
测试类测试
在这里插入图片描述
在这里插入图片描述

引用类型属性的数据类型和对象的数据类型为接口和实现类的关系

接口和实现类关系的就不做演示了



使用注解自动赋值

使用 @Resource 注解自动赋值

使用@Resource注解为引用类型属性赋值时,默认使用byName()方式,如果byName方式赋值失败,再使用byType()方式进行赋值,也可以通过在@Resource注解中添加name属性【@Resource(name=对象名)】设置为只允许使用byName方式

创建Student类
在这里插入图片描述
创建School类
在这里插入图片描述
添加注解

格式:@Resource 或 @Resource(name = 对象名) ,注解写到引用类型属性的上面

注意:要使用注解的方式给属性赋值,就要使用注解的方式创建对象(步骤可参考:Spring初使用:使用Spring创建对象

在这里插入图片描述
创建spring配置文件
在这里插入图片描述
测试类测试
在这里插入图片描述
在这里插入图片描述

使用 @Autowired 注解自动赋值

使用@Autowired注解为引用类型属性赋值时,默认使用byType方式,可以通过注解 @Qualifier(对象名) 修改为byName方式

创建Student类
在这里插入图片描述
创建School类
在这里插入图片描述
添加注解

格式:@Autowired,注解写到引用类型属性的上面

注意:要使用注解的方式给属性赋值,就要使用注解的方式创建对象(步骤可参考:Spring初使用:使用Spring创建对象

在这里插入图片描述
创建spring配置文件

在这里插入图片描述
测试类测试

在这里插入图片描述
在这里插入图片描述

@Autowired注解中的required属性

required属性有两个值:true和false

required = false:如果使用@Autowired注解给引用类型属性赋值时没有找到相应的对象,自动赋值失败,程序可以继续执行,此时引用类型属性的值为null

创建对象并赋值
在这里插入图片描述

创建spring配置文件

在这里插入图片描述
测试类测试
在这里插入图片描述
在这里插入图片描述

成功创建对象,但赋值失败,此时引用类型属性值为null

required = true:如果使用@Autowired注解给引用类型属性赋值时没有找到相应的对象,自动赋值失败,程序会报错并终止运行

创建对象并赋值
在这里插入图片描述
创建spring配置文件

在这里插入图片描述
测试类测试
在这里插入图片描述
成功创建对象,但赋值失败,此时程序报错并终止运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值