(9)基于xml的自动装配

所有的基于xml的自动装配底层都是调用set方法,它自动帮我们做了一些事,实际上是通过一定的映射规则来找到对应的变量的set方法。**自动装配只作用于那些「对应 setter 方法的参数类型是容器中已注册的 Bean 类型」的属性。**要想为简单类型赋值,请使用 <property> 显式设置

根据名称自动装配

Spring的配置文件这样配置:

xml 复制代码
<?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="userService" class="com.powernode.spring6.service.UserService" autowire="byName"/>
    
    <bean id="aaa" class="com.powernode.spring6.dao.UserDao"/>

</beans>

这个配置起到关键作用:

  • UserService Bean中需要添加autowire="byName",表示通过名称进行装配。
  • UserService类中有一个UserDao属性,而UserDao属性的名字是aaa,对应的set方法是setAaa() ,正好和UserDao Bean的id是一样的。这就是根据名称自动装配。
    这说明,如果根据名称装配(byName),底层会调用set方法进行注入。
    例如:setAge() 对应的名字是age,setPassword()对应的名字是password,setEmail()对应的名字是email。

根据类型自动装配

xml 复制代码
<?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">

    <!--byType表示根据类型自动装配-->
    <bean id="accountService" class="com.powernode.spring6.service.AccountService" autowire="byType"/>

    <bean class="com.powernode.spring6.dao.AccountDao"/>

</beans>

注意:

  • 这种基于类型的自动装配需要在类中提供空参构造和set方法
  • 当byType进行自动装配的时候,配置文件中某种类型的Bean必须是唯一的,不能出现多个。

!NOTE\] 总结 无论是byName还是byType,在装配的时候都是基于set方法的。所以set方法是必须要提供的。提供构造方法是不行的,大家可以测试一下。这里就不再赘述。

相关推荐
身如柳絮随风扬5 小时前
Java中的CAS机制详解
java·开发语言
风筝在晴天搁浅6 小时前
hot100 78.子集
java·算法
超级大只老咪6 小时前
快速进制转换
笔记·算法
故事和你917 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Configure-Handler8 小时前
buildroot System configuration
java·服务器·数据库
:Concerto8 小时前
JavaSE 注解
java·开发语言·sprint
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.9 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
电商API_180079052479 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫
一点程序9 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
C雨后彩虹9 小时前
计算疫情扩散时间
java·数据结构·算法·华为·面试