目录

  • 为基本类型(及其包装类)属性赋值
    • 通过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为对象的属性赋值相关推荐

  1. java学习-BeanUtils给对象的属性赋值

    需要加入两个jar包: commons-beanutils-1.9.3.jar commons-logging-1.2.jar 使用方法: 给对象的属性赋值:BeanUtils.setProperty ...

  2. spring系列-注解驱动原理及源码-属性赋值

    目录 一.bean属性赋值 1.bean属性使用@Value赋值 2.bean属性通过配置文件赋值 一.bean属性赋值 1.bean属性使用@Value赋值 (1)编写bean类 package c ...

  3. 给内部类对象数组属性赋值时报错:Exception in thread main java.lang.NullPointerException...

    前言 1255: 打怪升级(Java),写这个题目程序的时候,控制台提示如下错误: Exception in thread "main" java.lang.NullPointer ...

  4. [微信小程序]给data的对象的属性赋值

     有问题可以扫码加我微信,有偿解决问题.承接小程序开发. 微信小程序开发交流qq群   173683895  . 526474645 : 正文: <view wx:for="{{lei ...

  5. python属性使用教程_Python对象的属性访问过程详解

    只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...

  6. python属性_深入理解python对象及属性

    类属性和实例属性 首先来看看类属性和类实例的属性在python中如何存储,通过__dir__方法来查看对象的属性 >>> class Test(object): pass >& ...

  7. 1.10 访问对象的属性和行为

    每个对象都有自己的属性和行为,这些属性和行为在类中体现为成员变量和成员方法,其中成员变量对应对象的属性,成员方法对应对象的行为. 在 Java 中,要引用对象的属性和行为,需要使用点(.)操作符来访问 ...

  8. Java访问对象的属性和行为

    每个对象都有自己的属性和行为,这些属性和行为在类中体现为成员变量和成员方法,其中成员变量对应对象的属性,成员方法对应对象的行为. 在 Java 中,要引用对象的属性和行为,需要使用点(.)操作符来访问 ...

  9. java访问对象的属性_java访问对象的属性和行为详细介绍

    每一个对象都会有属于自己的属性和行为,下面的文章就对java访问对象的属性和行为做了一下详细的介绍. 对象的属性和行为在类当中体现为成员变量和成员方法,其中成员变量对应对象的属性,成员方法对应对象的行 ...

最新文章

  1. 在线作图|微生物多样性分析——稀释曲线
  2. 设置刻度线_6.19 坐标轴:(补充)针对坐标轴线和小刻度线太细的问题
  3. python 数据验证
  4. 立方体引起的引力异常计算&画图
  5. kafka数据不丢失不重复_如何配置 KAFKA 使其消息不会丢失
  6. .net 引用Com组件的几种方案
  7. 回文质数(洛谷-P1217)
  8. poj 1724 有限制的最短距离(优先队列+链表)
  9. http://jingyan.baidu.com/article/636f38bb3eb78ad6b8461082.html
  10. head标签中到底可以放什么?
  11. Android热修复Sophix详解
  12. php 图片 变灰色,php[图片变灰]生成灰色图片代码
  13. 工作两年小结----勿忘初心不负梦想
  14. 创业感悟:不忘初心,方得始终
  15. JAVA如何在LINUX里编程,如何使用加多宝(jdb)在linux下调试Java程序
  16. 魔方cfop公式软件_【初级篇】(八)最简单的三阶魔方入门教程——顶棱还原...
  17. 辨别亦真亦假的Svchost.exe
  18. D3.js 制作中国地图 .net 公共基础类
  19. 2020焊工(高级)考试题及焊工(高级)考试软件
  20. python数据分析实例:python抓取课工厂网站数据和分析

热门文章

  1. 《高等统计物理学》1:领悟系综
  2. 网络工程生产实习——构建中小型企业网(eNSP)
  3. 2020年必知的15个中小型企业网络安全统计数据
  4. 如何使用Arduino连接蜂鸣器与温度传感器
  5. 如何通过Dynamics CRM 2015修改用户密码
  6. 区块链技术,未来的新竞争
  7. NAO V6 开发环境的配置(附所有文件)
  8. 一种快速分词系统的设计与实现
  9. 过往已定,未来可期,唯有努力,不负幸运。
  10. 微信小程序——不同角色的导航栏显示不同