Spring自动装配Bean实现过程详解

 更新时间:2020年02月22日 10:50:16   作者:流氓大队长  
这篇文章主要介绍了Spring自动装配Bean实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Java技术迷

这篇文章主要介绍了Spring自动装配Bean实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

要使用自动装配,就需要配置 <bean> 元素的 autowire 属性。autowire 属性有五个值,具体说明如表 1 所示。
表 1 autowire 的属性和作用

 

名称 说明
byName 根据 Property 的 name 自动装配,如果一个 Bean 的 name 和另一个 Bean 中的 Property 的 name 相同,则自动装配这个 Bean 到 Property 中。
byType 根据 Property 的数据类型(Type)自动装配,如果一个 Bean 的数据类型兼容另一个 Bean 中 Property 的数据类型,则自动装配。
constructor 根据构造方法的参数的数据类型,进行 byType 模式的自动装配。
autodetect 如果发现默认的构造方法,则用 constructor 模式,否则用 byType 模式。
no 默认情况下,不使用自动装配,Bean 依赖必须通过 ref 元素定义。

下面通过案例演示如何实现自动装配。首先将 applicationContext.xml 配置文件修改成自动装配形式,如下所示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="personDao" class="com.mengma.annotation.PersonDaoImpl" />
<bean id="personService" class="com.mengma.annotation.PersonServiceImpl"
autowire="byName" />
<bean id="personAction" class="com.mengma.annotation.PersonAction"
autowire="byName" />
</beans>

在上述配置文件中,用于配置 personService 和 personAction 的 <bean> 元素中除了 id 和 class 属性以外,还增加了 autowire 属性,并将其属性值设置为 byName(按属性名称自动装配)。

默认情况下,配置文件中需要通过 ref 装配 Bean,但设置了 autowire="byName",Spring 会在配置文件中自动寻找与属性名字 personDao 相同的 <bean>,找到后,通过调用 setPersonDao(PersonDao personDao)方法将 id 为 personDao 的 Bean 注入 id 为 personService 的 Bean 中,这时就不需要通过 ref 装配了。

使用 JUnit 再次运行测试类中的 test() 方法,控制台的显示结果如图所示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://www.cnblogs.com/lowerma/p/11752310.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • JavaWeb导出Excel文件并弹出下载框

    JavaWeb导出Excel文件并弹出下载框

    这篇文章主要为大家详细介绍了JavaWeb导出Excel文件并弹出下载框的相关资料,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • springboot lua检查redis库存的实现示例

    springboot lua检查redis库存的实现示例

    本文主要介绍了springboot lua检查redis库存的实现示例,为了优化性能,通过Lua脚本实现对多个马戏场次下的座位等席的库存余量检查,感兴趣的可以了解一下
    2024-09-09
  • Java字符串编码解码性能提升的技巧分享

    Java字符串编码解码性能提升的技巧分享

    这篇文章主要是和大家分享几个Java中提升字符串编码解码性能的小技巧,文中的示例代码讲解详细,对我们学习有一定的帮助,需要的可以参考一下
    2022-05-05
  • Springboot使用RestTemplate调用第三方接口的操作代码

    Springboot使用RestTemplate调用第三方接口的操作代码

    这篇文章主要介绍了Springboot使用RestTemplate调用第三方接口,我只演示了最常使用的请求方式get、post的简单使用方法,当然RestTemplate的功能还有很多,感兴趣的朋友可以参考RestTemplate源码
    2022-12-12
  • Spring循环依赖实现过程揭秘

    Spring循环依赖实现过程揭秘

    这篇文章主要介绍了Spring循环依赖实现过程,Spring的解决循环依赖是有前置条件的,要解决循环依赖我们首先要了解Spring Bean对象的创建过程和依赖注入的方式
    2023-01-01
  • SpringBoot如何使用内嵌Tomcat问题

    SpringBoot如何使用内嵌Tomcat问题

    这篇文章主要介绍了SpringBoot如何使用内嵌Tomcat问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • SpringBoot结合ProGuard实现代码混淆(最新版)

    SpringBoot结合ProGuard实现代码混淆(最新版)

    这篇文章主要介绍了SpringBoot结合ProGuard实现代码混淆(最新版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • spring boot 加载web容器tomcat流程源码分析

    spring boot 加载web容器tomcat流程源码分析

    本文章主要描述spring boot加载web容器 tomcat的部分,为了避免文章知识点过于分散,其他相关的如bean的加载,tomcat内部流程等不做深入讨论,具体内容详情跟随小编一起看看吧
    2021-06-06
  • Java类的定义以及执行顺序学习教程

    Java类的定义以及执行顺序学习教程

    这篇文章主要介绍了Java类的定义以及执行顺序学习教程,包括对象的创建等面向对象编程的基础知识,需要的朋友可以参考下
    2015-09-09
  • Spring-boot 中@Async使用遇到的坑

    Spring-boot 中@Async使用遇到的坑

    这篇文章主要介绍了Spring-boot 中@Async使用的坑,首先使用@Async 需要在Spring启动类上添加注解@EnableAsyn或者在你们线程池配置类添加@EnableAsyn,需要的朋友可以参考下
    2024-01-01

最新评论