spring IOC容器的Bean管理XML自动装配过程

目录
  • 什么是自动装配?
    • 自动装配过程
      • 1. 创建 2 个类
      • 2. 配置文件
      • 3. 测试方法

什么是自动装配?

在之前的内容中,每给属性注入值都要一个个的用 property 标签来完成,比如:

<bean id="book" class="com.pingguo.spring5.collectiontype.Book" scope="prototype">
        <property name="list" ref="bookList"></property>
    </bean>

这就是手动装配。

而自动装配中,spring 会根据指定装配规则(属性名称或者属性类型) 来自动的将匹配的属性值进行注入。

自动装配过程

1. 创建 2 个类

分别是部门类 Department 和员工类 Employee 。

package com.pingguo.spring5.autowire;
public class Department {
    @Override
    public String toString() {
        return "Department{}";
    }
}

员工类有个 部门的属性,表示员工所属的一个部门。其他方法是为了后续方便演示输出。

package com.pingguo.spring5.autowire;
public class Employee {
    private Department department;
    public void setDepartment(Department department) {
        this.department = department;
    }
    @Override
    public String toString() {
        return "Employee{" +
                "department=" + department +
                '}';
    }
    public void test() {
        System.out.println(department);
    }
}

2. 配置文件

<?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="employee" class="com.pingguo.spring5.autowire.Employee">
        <property name="department" ref="department"></property>
    </bean>
    <bean id="department" class="com.pingguo.spring5.autowire.Department"></bean>
</beans>

3. 测试方法

@Test
    public void test5() {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean5.xml");
        Employee employee = context.getBean("employee", Employee.class);
        System.out.println(employee);
    }

运行结果:

Employee{department=Department{}}
Process finished with exit code 0

ok,到这里,其实就是手动装配的过程。

实现自动装配,在配置文件里,通过 bean 标签里的属性 autowire 来配置:

  • autowire="byName":根据属性名称自动注入。
  • autowire="byType":根据属性类型自动注入。

1)byName 演示

注入值的bean的 id 值和类属性名称一致,比如:

修改配置文件,加上 autowire="byName",然后注释掉 property。

<bean id="employee" class="com.pingguo.spring5.autowire.Employee" autowire="byName">
        <!--<property name="department" ref="department"></property>-->
    </bean>
    <bean id="department" class="com.pingguo.spring5.autowire.Department"></bean>

执行测试函数:

Employee{department=Department{}}
Process finished with exit code 0

跟使用 property 手动装配结果一致。

2)byType 演示

要注入值的 bean 的类型与 属性里的一致,比如:

现在继续修改配置文件,加上 autowire="byType",然后注释掉 property。

<bean id="employee" class="com.pingguo.spring5.autowire.Employee" autowire="byType">
        <!--<property name="department" ref="department"></property>-->
    </bean>
    <bean id="department" class="com.pingguo.spring5.autowire.Department"></bean>

再次执行测试:

Employee{department=Department{}}
Process finished with exit code 0

跟使用 property 手动装配结果一致。

不过,用 xml 方式使用自动装配实际中是很少的,一般是以注解的方式,后续会学习到。

以上就是spring IOC容器的Bean管理XML自动装配过程的详细内容,更多关于spring IOC Bean管理XML装配的资料请关注我们其它相关文章!

(0)

相关推荐

  • 基于XML配置Spring的自动装配过程解析

    一.了解Spring自动装配的方式 采用传统的XML方式配置Bean组件的关键代码如下所示 <bean id="userMapper" class="edu.cn.dao.UserMapperImpl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> <bean id="userSer

  • Spring-IOC容器-Bean管理-基于XML方式超详解

    目录 Spring-IOC容器-Bean管理-基于XML方式 Spring框架概述 IOC概念和原理 IOC 操作 Bean 管理(set方式注入&&使用有参构造进行注入) IOC 操作 Bean 管理(xml注入其他类型属性) IOC 操作 Bean 管理(xml注入集合属性) IOC 操作 Bean 管理(FactoryBean) IOC 操作 Bean 管理(bean 作用域) IOC 操作 Bean 管理(bean 生命周期) IOC 操作 Bean 管理(XML自动装配) IOC

  • Spring Boot 利用 XML 方式整合 MyBatis

    目录 一.前言 二.整合过程 新建 Spring Boot 项目 添加 pom 依赖 准备数据库 pojo 层 dao 层 service 层 controller 层 入口程序配置 网页测试 总结 一.前言 上一篇文章中我们已经Spring Boot 利用注解方式整合 MyBatis,今天我们就来看看,如何利用 XML 文件的方式来将两者整合起来! 下图是整个整合过程,接下来开始整合: 二.整合过程 最终项目结构如下图所示: 新建 Spring Boot 项目 新建一个 Spring Boot

  • Spring Xml装配Bean的思路详解

    1,概述 在Spring中提供了三种方式来对Bean进行配置: 在xml文件中配置在Java的接口和实现类中配置隐式Bean的发现机制和自动装配原则 这三种方式都经常用到,而且常常会混合使用.这篇先写xml装配Bean. 2,分析bean标签 <bean id="pserson" class="com.xl.spring.xlIoc.beans.Person"> <property name="id" value="1

  • Spring IOC容器基于XML外部属性文件的Bean管理

    目录 Spring IOC Bean管理XML 一.常规配置方法 1. 引入依赖 2. xml 文件配置数据库连接池 二.引入外部属性文件来配置数据库连接池 1. 创建外部文件 2. 引入外部文件到xml配置文件中 3. 引用外部文件里的属性 Spring IOC Bean管理XML 有时候,为了灵活方便,我们会把某些固定的数据存放到文件里,然后去读取里面的内容来使用. 比如数据库的连接信息,这些内容就可以放到 properties 文件中,然后使用 xml 配置文件去读取里面的内容,完成需要的

  • spring IOC容器的Bean管理XML自动装配过程

    目录 什么是自动装配? 自动装配过程 1. 创建 2 个类 2. 配置文件 3. 测试方法 什么是自动装配? 在之前的内容中,每给属性注入值都要一个个的用 property 标签来完成,比如: <bean id="book" class="com.pingguo.spring5.collectiontype.Book" scope="prototype"> <property name="list" ref=

  • Spring IOC容器的Bean管理基于注解属性注入方式

    目录 基于注解方式进行属性注入 一.@Autowired 1. 添加对象注解 2. 在service中注入dao对象 3. 创建测试函数测试效果 二.@Qualifier 三.@Resource 1. 替代 @Autowired 2. 替换 @Qualifier 四.@Value 基于注解方式进行属性注入 涉及到 4 个注解 @Autowired:根据属性类型,进行自动装配 @Qualifier:根据属性名称进行注入,跟 @Autowired 一起使用 @Resource:既可以根据类型注入,也

  • Spring IOC容器Bean管理的完全注解开发放弃配置文件

    目录 IOC容器基于Bean管理的完全注解开发放弃配置文件 创建配置类 测试一下 IOC容器基于Bean管理的完全注解开发放弃配置文件 通过注解的方式,我们不需要在xml配置文件里进行各种注入配置,只需要开启扫描即可. 那如果开启扫描也能通过注解方式,那不就完全不需要配置文件了么? 创建配置类 创建配置类,替代 xml 配置文件. package com.pingguo.spring5.config; import org.springframework.context.annotation.C

  • Spring IOC容器Bean管理XML注入集合类型属性

    目录 一.定义数组.list.map.set类型属性 二.配置文件中进行对应配置 三.注入对象集合类型 四.提取注入集合的部分 1. 引入名称空间 util 2. 使用 util 标签完成集合注入的提取 一.定义数组.list.map.set类型属性 创建类.定义数组.list.map.set类型属性,生成对应set方法. package com.pingguo.spring5.collectiontype; import java.util.Arrays; import java.util.L

  • spring IOC容器管理必须知道的一些操作(基于XML方式)

    目录 一.IOC容器 ​1.什么是IOC(控制反转) ​2.IOC底层 ​3.Spring提供的IOC容器实现的两种方式(两个接口) ​4.ApplicationContext接口的实现类(具体根据API文档查看) 二.IOC容器-Bean管理 ​1.IOC操作Bean管理 ​2.基于XML配置文件创建对象 ​3.基于XML方式注入属性(DI:依赖注入(注入属性)) ​4.注入空值和特殊符号 ​5.注入属性-外部bean ​6.基于XML方式注入内部bean和级联赋值 ​7.IOC操作Bean管

  • Spring IOC容器Bean注解创建对象组件扫描

    目录 Spring IOC Bean注解对象组件扫描 一.spring 针对 bean 管理中创建对象提供注解 1. 引入依赖 2. 开启组件扫描 3. 创建类,并添加注解来创建对象 4. 测试一下 二.组件扫描的其他过滤条件 1. include-filter 2. exclude-filter Spring IOC Bean注解对象组件扫描 什么是注解? 注解是代码里的特殊标记,格式: @注解名称(属性名称=属性值, 属性名称2=属性值...) 可以作用在:类.方法.属性上面. 使用注解的目

  • Spring为IOC容器注入Bean的五种方式详解

    这篇文章主要介绍了Spring为IOC容器注入Bean的五种方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一 @Import导入组件,id默认是组件的全类名 //类中组件统一设置.满足当前条件,这个类中配置的所有bean注册才能生效: @Conditional({WindowsCondition.class}) @Configuration @Import({Color.class,Red.class,MyImportSelector

  • Spring IOC容器FactoryBean工厂Bean实例

    目录 前言 工厂 bean 前言 之前提到的 bean 是我们自己创建的,属于普通类型的 bean.还有一种是工厂 bean,属于 spring 中内置的一种类型. 区别是什么?以此配置为例: <bean id="course2" class="com.pingguo.spring5.collectiontype.Course"> <property name="course_name" value="毛氏面点课&qu

  • 向Spring IOC 容器动态注册bean实现方式

    目录 本文的大纲 从一个需求谈起 Spring Bean的生命周期再完善 BeanDefinition Bean 加入IOC容器的几种方式 从spring容器中动态添加或移除bean 本文的大纲 从一个需求谈起 这周遇到了这样一个需求,从第三方的数据库中获取值,只是一个简单的分页查询,处理这种问题,我一般都是在配置文件中配置数据库的地址等相关信息,然后在Spring Configuration 注册数据量连接池的bean,然后再将数据库连接池给JdbcTemplate, 但是这种的缺陷是,假设填

随机推荐