spring 给对象赋值

概念

spring 给对象赋值的方式有两种 一种是配置文件,一种是注解

DI:依赖注入,给属性赋值
1、基于XML的实现:在spring的配置文件中,使用标签和 属性完成
2、基于注解实现:使用spring中的注解来完成属性的赋值

DI语法分类:
1、set注入(设置注入):spring调用类的set方法,在set方法可以实现属性的赋值。【80%左右都是使用该方法注入】
2、构造注入:spring中调用构造方法,创建对象,在构造方法中王车工赋值

基于XML的实现

set注入

set方法是在构造方法之后,才执行
1、bean配置文件:

	<!--
       声明dog对象
       注入:就是属性的赋值
       di:set注入的方式赋值
      -->
    <bean id="dog" class="com.phy.service.impl.Dog">
    	<!--简单类型赋值 Java的基本数据类型和字符串->
        <property name="name" value="小狗"></property>
        <property name="age" value="21"></property>
        <!--引用类型赋值-->
        <property name="cat" ref="bean的id"></property>
    </bean>
    <bean id="dog" class="com.phy.service.impl.Cat">
     	<property name="name" value="Tom"></property>
    </bean>

2、注意事项
该类中必须含有set方法,方法名称必须符合命名规范,只要有set方法就可以执行。
也就是根据property的name找对应的setName()方法,进行赋值

构造注入

spring 调用类的有参构造方法,在创建对象的同时,在构造方法中给属性赋值。
1、bean配置文件:

    <!--
        name:构造方法的形参名
        index:表示构造方法的参数位置,左到右从0开始
        value:构造方法的形参类型是简单类型
        ref:构造方法的形参类型是引用类型
      -->
    <bean id="dog" class="com.phy.service.impl.Dog">
        <constructor-arg name="name" value="小狗"/>
        <constructor-arg name="sex" value=""/>
        <constructor-arg name="age" value="21"/>
<!--        <constructor-arg name="Object" ref="Object"/>-->
    </bean>
    <bean id="dog1" class="com.phy.service.impl.Dog">
        <constructor-arg index="0" value="小狗"/>
        <constructor-arg index="1" value=""/>
        <constructor-arg index="2" value="21"/>
    </bean>

2、注意事项:
beans.xml中声明对象不用关心顺序,当创建Dog对象时,发现引用十五Object找不到,会对配置文件进行二次扫描。

3、通过构造注入注入文件对象

	<bean id="file" class="java.io.File">
        <constructor-arg name="parent" value="文件路径"/>
        <constructor-arg name="child" value="文件名.后缀"/>
    </bean>

引用类型的自动注入

spring框架可以根据某些规则可以给引用类型赋值,最常用的规则是byName和byType

byName:通过名称自动注入

Java类中引用类型的属性名和spring容器中(配置文件)的id名称一样,并且数据类型是一样的,这样的容器中的bean,spring可以直接赋值给引用类型。

<bean id="file" class="java.io.File" autowire="byName"></bean>
byType :通过类型自动注入

注意:使用byType时,配置文件中的bean只能有一个
Java类中引用类型的数据类型和spring容器中(配置文件)的class属性是同源关系的,这样的bean可以直接赋值给引用类型。
同源关系:
1、Java类中引用类型的数据类型和class的值是一样的
2、Java类中引用类型的数据类型和class的值是父子关系的(Java类中数据类型是父)
3、Java类中引用类型的数据类型和class的值是接口与实现类关系的(Java类中的数据类型是接口)

<bean id="file" class="java.io.File" autowire="byType"></bean>

基于注解实现

spring通过注解来实现对象的创建和赋值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值