Spring的基础使用二

Spring的基础使用二

Setter注入

   <bean id="studentTwo" class="com.wfy.pojo.Student">
        <property name="sid" value="1001"></property>
        <property name="name" value="任凌飞"></property>
        <property name="gender" value=""></property>
        <property name="age" value="20"></property>
    </bean>

Setter注入:

  • ​ property: 通过成员变量的set方法进行赋值
  • ​ name: 设置需要赋值的属性名(和set、get方法有关,和成员变量名无关)
  • ​ value: 设置为属性所赋的值

构造器注入

  <bean id="studentThree" class="com.wfy.pojo.Student">
        <constructor-arg value="1001"></constructor-arg>
        <constructor-arg value="任凌飞"></constructor-arg>
        <constructor-arg value="20"></constructor-arg>
        <constructor-arg value=""></constructor-arg>
    </bean>

构造器注入:

  • ​ constructor-arg:通过有参构造器为属性赋值
  • ​ value: 为有参构造器中的各个属性赋值

设置特殊字符

    <bean id="studentFive" class="com.wfy.pojo.Student">
        <property name="sid" value="1001"></property>
        <property name="name" >
            <value><![CDATA[<任凌飞>]]></value>
        </property>
        <property name="gender" value=""></property>
        <property name="age" value="20"></property>
    </bean>
  • "< : &lt"

  • " > : &gt "

  • CDATA节其中的内容会原样解析

为属性赋值为空标签

 <bean id="studentFour" class="com.wfy.pojo.Student">
        <property name="sid" value="1001"></property>
        <property name="name" value="任凌飞"></property>
        <property name="gender">
            <null/>
        </property>
        <property name="age" value="20"></property>
    </bean>

通过标签进行赋空值

    @Test
    public void DIThree(){
        //获取IOC容器
        ApplicationContext ioc= new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取bean
        Student bean = ioc.getBean("studentFour", Student.class);
        System.out.println(bean);
    }
 System.out.println(bean.getGender().toString())

抛出异常:

NullPointerException空指针异常,因此通过设置标签就可以为属性赋空值

多表引用

一、ref:引用IOC容器中某一个bean的id来为当前的属性赋值

  <property name="class" ref="classOne"></property>
  <bean id="studentSix" class="com.wfy.pojo.Student">
        <property name="sid" value="1001"></property>
        <property name="name" value="任凌飞"></property>
        <property name="age" value="20"></property>
        <property name="gender" value=""></property>
        <property name="cla" ref="classOne"></property>
    </bean>
    <bean id="classOne" class="com.wfy.pojo.Class">
        <property name="cid" value="1"></property>
        <property name="cname" value="宏志班"></property>
    </bean>

二、通过级联的方式,要保证提前为class属性赋值或者实例化

  <property name="class.cid" value="1001"></property>

三、通过内部Bean进行设置

  <bean id="studentSix" class="com.wfy.pojo.Student">
        <property name="sid" value="1001"></property>
        <property name="name" value="任凌飞"></property>
        <property name="age" value="20"></property>
        <property name="gender" value=""></property>
        <property name="cla">
            <bean id="claInner" class="com.wfy.pojo.Class">
                <property name="cid" value="1001"></property>
                <property name="cname" value="宏志班"></property>
            </bean>
        </property>

注意:内部bean,只能在当前bean的内部使用,不能直接通过IOC容器获取

posted @   ShamUnite  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示