Spring初使用:使用Spring为对象的属性赋值
目录
- 为基本类型(及其包装类)属性赋值
- 通过xml配置文件的方式
- 使用Set方法赋值
- 使用有参构造方法赋值
- 通过注解的方式
- 使用 @Value 注解赋值
- 为引用类型属性赋值
- 指定赋值
- 使用Set方法赋值
- 使用有参构造方法赋值
- 自动赋值
- 使用Set方法自动赋值
- byName
- byType
- 引用类型属性的数据类型和对象的数据类型相同
- 引用类型属性的数据类型和对象的数据类型为父类和子类关系
- 引用类型属性的数据类型和对象的数据类型为接口和实现类的关系
- 使用注解自动赋值
- 使用 @Resource 注解自动赋值
- 使用 @Autowired 注解自动赋值
- @Autowired注解中的required属性
使用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配置文件
测试类测试
成功创建对象,但赋值失败,此时程序报错并终止运行
Spring初使用:使用Spring为对象的属性赋值相关推荐
- java学习-BeanUtils给对象的属性赋值
需要加入两个jar包: commons-beanutils-1.9.3.jar commons-logging-1.2.jar 使用方法: 给对象的属性赋值:BeanUtils.setProperty ...
- spring系列-注解驱动原理及源码-属性赋值
目录 一.bean属性赋值 1.bean属性使用@Value赋值 2.bean属性通过配置文件赋值 一.bean属性赋值 1.bean属性使用@Value赋值 (1)编写bean类 package c ...
- 给内部类对象数组属性赋值时报错:Exception in thread main java.lang.NullPointerException...
前言 1255: 打怪升级(Java),写这个题目程序的时候,控制台提示如下错误: Exception in thread "main" java.lang.NullPointer ...
- [微信小程序]给data的对象的属性赋值
有问题可以扫码加我微信,有偿解决问题.承接小程序开发. 微信小程序开发交流qq群 173683895 . 526474645 : 正文: <view wx:for="{{lei ...
- python属性使用教程_Python对象的属性访问过程详解
只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...
- python属性_深入理解python对象及属性
类属性和实例属性 首先来看看类属性和类实例的属性在python中如何存储,通过__dir__方法来查看对象的属性 >>> class Test(object): pass >& ...
- 1.10 访问对象的属性和行为
每个对象都有自己的属性和行为,这些属性和行为在类中体现为成员变量和成员方法,其中成员变量对应对象的属性,成员方法对应对象的行为. 在 Java 中,要引用对象的属性和行为,需要使用点(.)操作符来访问 ...
- Java访问对象的属性和行为
每个对象都有自己的属性和行为,这些属性和行为在类中体现为成员变量和成员方法,其中成员变量对应对象的属性,成员方法对应对象的行为. 在 Java 中,要引用对象的属性和行为,需要使用点(.)操作符来访问 ...
- java访问对象的属性_java访问对象的属性和行为详细介绍
每一个对象都会有属于自己的属性和行为,下面的文章就对java访问对象的属性和行为做了一下详细的介绍. 对象的属性和行为在类当中体现为成员变量和成员方法,其中成员变量对应对象的属性,成员方法对应对象的行 ...
最新文章
- 在线作图|微生物多样性分析——稀释曲线
- 设置刻度线_6.19 坐标轴:(补充)针对坐标轴线和小刻度线太细的问题
- python 数据验证
- 立方体引起的引力异常计算&画图
- kafka数据不丢失不重复_如何配置 KAFKA 使其消息不会丢失
- .net 引用Com组件的几种方案
- 回文质数(洛谷-P1217)
- poj 1724 有限制的最短距离(优先队列+链表)
- http://jingyan.baidu.com/article/636f38bb3eb78ad6b8461082.html
- head标签中到底可以放什么?
- Android热修复Sophix详解
- php 图片 变灰色,php[图片变灰]生成灰色图片代码
- 工作两年小结----勿忘初心不负梦想
- 创业感悟:不忘初心,方得始终
- JAVA如何在LINUX里编程,如何使用加多宝(jdb)在linux下调试Java程序
- 魔方cfop公式软件_【初级篇】(八)最简单的三阶魔方入门教程——顶棱还原...
- 辨别亦真亦假的Svchost.exe
- D3.js 制作中国地图 .net 公共基础类
- 2020焊工(高级)考试题及焊工(高级)考试软件
- python数据分析实例:python抓取课工厂网站数据和分析