IOC 操作 Bean 管理(xml 自动装配)

目录

1、什么是自动装配?

2、演示自动装配过程


1、什么是自动装配?

之前我们在做一个类装入属性时,我们都会通过在xml配置文件中,通过property标签中的name属性,指定value属性值,向类中设置值,这个值可以设置成普通类型,也可以设置成对象类型这种方式叫做 手动装配。

自动装配可以不需要property标签,不需要属性名称和属性值,Spring会帮我们自动的完成属性值的注入。

2、演示自动装配过程

自动装配一共有俩种类型, 根据属性名称注入和根据属性类型注。

bean 标签属性 autowire,配置自动装配 autowire 属性常用两个值:

byName 根据属性名称注入 ,注入值 bean 的 id 值和类属性名称一样

byType 根据属性类型注

下面进行演示byName 根据属性名称注入

我们将用到3个类,和一个配置文件

package com.company;

public class Book {
    //定义一个User类型的属性
    private User user;
    //set方法设置属性
    public void setUser(User user) {
        this.user = user;
    }

加入toString方法方便查看
    @Override
    public String toString() {
        return "Book{" +
                "user=" + user +
                '}';
    }

    public void test(){
        System.out.println(user);
    }
}
package com.company;

public class User {
    
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   <!-- <bean id="user" class="com.company.User"></bean>-->

    <!--<bean id="book" class="com.company.Book">
        <property name="bname" value="Spring5"></property>
        <property name="bauthor" value="zwz"></property>
    </bean>-->

    <bean id="book" class="com.company.Book" autowire="byName" > </bean>   <!--根据下面注册对象名字来注入属性值-->

    <bean id="user" class="com.company.User"></bean>
</beans>

package com.company;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Spring5Test {
    @Test
    public  void testBook1(){

        //加载spring配置文件
        ApplicationContext context =new ClassPathXmlApplicationContext("bean1.xml");

        //获取配置创建的对象
        Book book=context.getBean("book",Book.class);


        System.out.println(book);



    }

}

结果: 

 下面进行演示byType 根据属性类型注入

其余和类和上述类一样,我们只需要修改配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   <!-- <bean id="user" class="com.company.User"></bean>-->

    <!--<bean id="book" class="com.company.Book">
        <property name="bname" value="Spring5"></property>
        <property name="bauthor" value="zwz"></property>
    </bean>-->

    <bean id="book" class="com.company.Book" autowire="byType" > </bean>   <!--根据下面注册对象类型来注入属性值-->

    <bean id="user" class="com.company.User"></bean>
</beans>

结果:

需要注意的问题:

根据类型 自动装配时:相同类型的bean对象,不能定义多个,否则类型识别不出来是哪个bean注入 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天你学习了ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值