系列七、IOC操作bean管理(xml自动装配)

一、概述

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

二、分类

xml自动装配分为按照属性名称自动装配(byName)和按照属性类型自动装配(byType)。

2.1、byName

java 复制代码
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Department implements Serializable {

    /**
     * 部门名称
     */
    private String name;

}

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee implements Serializable {

    /**
     * 员工名称
     */
    private String name;

    /**
     * 性别
     */
    private String gender;

    /**
     * 部门
     */
    private Department department;
}

<?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="org.star.entity.Employee" autowire="byName">
        <property name="name" value="李白"></property>
        <property name="gender" value="男"></property>
        <property name="department" ref="department"></property>
    </bean>

    <bean id="department" class="org.star.entity.Department">
        <property name="name" value="研发部"></property>
    </bean>

</beans>

/**
 * IOC操作bean管理(xml自动装配-byName)
 */
@Test
public void beanManagementTest12() {
	ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext12.xml");
	Employee employee = context.getBean("employee", Employee.class);
	System.out.println("byName employee = " + employee);
}
// 控制台打印结果
byName employee = Employee(name=李白, gender=男, department=Department(name=研发部))

2.2、byType

java 复制代码
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Department implements Serializable {

    /**
     * 部门名称
     */
    private String name;

}

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee implements Serializable {

    /**
     * 员工名称
     */
    private String name;

    /**
     * 性别
     */
    private String gender;

    /**
     * 部门
     */
    private Department department;
}

<?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="org.star.entity.Employee" autowire="byType">
        <property name="name" value="李白"></property>
        <property name="gender" value="男"></property>
        <property name="department" ref="department"></property>
    </bean>

    <bean id="department" class="org.star.entity.Department">
        <property name="name" value="研发部"></property>
    </bean>

</beans>

/**
 * IOC操作bean管理(xml自动装配-byType)
 */
@Test
public void beanManagementTest13() {
	ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext13.xml");
	Employee employee = context.getBean("employee", Employee.class);
	System.out.println("byType employee = " + employee);
}
// 控制台打印结果
byType employee = Employee(name=李白, gender=男, department=Department(name=研发部))
相关推荐
凤凰院凶涛QAQ5 小时前
《Java版数据结构 & 集合类剖析》集合框架的封装设计与顺序表:“从 Iterable 到 ArrayList:集合框架的‘职业树“
java·开发语言·数据结构
孟华苏6 小时前
怎么快速排查内存泄漏问题
java·开发语言·python
noipp6 小时前
推荐题目:洛谷 P16510 [GKS 2015 #C] gRanks
java·c语言·开发语言·c++·python·算法
flyinmind6 小时前
Java环境与Android环境中使用QuickJS
java·开发语言·javascript·quickjs
不吃鱼的羊6 小时前
DaVinci Developer自动连接
java·开发语言
farerboy6 小时前
15-Java while 和 do...while循环
java·后端
在繁华处6 小时前
Java从零到熟练(十二):Java与AI工具整合
java·人工智能·python
凯瑟琳.奥古斯特6 小时前
力扣1235完整解法详解
java·开发语言·leetcode
quan_泉6 小时前
DIDCTF 取证初学者
java·服务器·前端
i220818 Faiz Ul6 小时前
民谣网站|基于Springboot的民谣网站管理系统(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·民谣网站