码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Spring -Spring之依赖注入源码解析


    依赖注入底层原理流程图:
    Spring中Bean的依赖注入原理| ProcessOn免费在线作图,在线流程图,在线思维导图

    Spring中到底有几种依赖注入的方式?

    首先分两种:

    1. 手动注入
    2. 自动注入

    手动注入

    在XML中定义Bean时,就是手动注入,因为是程序员手动给某个属性指定了值。

    1. <bean name="userService" class="com.luban.service.UserService">
    2.  <property name="orderService" ref="orderService"/>
    3. </bean>

    上面这种底层是通过set方法进行注入。

    1. <bean name="userService" class="com.luban.service.UserService">
    2.  <constructor-arg index="0" ref="orderService"/>
    3. </bean>

    上面这种底层是通过构造方法进行注入。

    所以手动注入的底层也就是分为两种:

    1. set方法注入
    2. 构造方法注入

    自动注入

    自动注入又分为两种:

    1. XML的autowire自动注入
    2. @Autowired注解的自动注入

    XML的autowire自动注入

    在XML中,我们可以在定义一个Bean时去指定这个Bean的自动注入模式:

    1. byType
    2. byName
    3. constructor
    4. default
    5. no

    比如:

    <bean id="userService" class="com.luban.service.UserService" autowire="byType"/>
    

    这么写,表示Spring会自动的给userService中所有的属性自动赋值(不需要这个属性上有@Autowired注解,但需要这个属性有对应的set方法)。

    在创建Bean的过程中,在填充属性时,Spring会去解析当前类,把当前类的所有方法都解析出来,Spring会去解析每个方法得到对应的PropertyDescriptor对象,PropertyDescriptor中有几个属性:

    1. name:这个name并不是方法的名字,而是拿方法名字进过处理后的名字
      1. 如果方法名字以“get”开头,比如“getXXX”,那么name=XXX
      2. 如果方法名字以“is”开头,比如“isXXX”,那么name=XXX
  • 相关阅读:
    穿越风波,“长红”的直播电商依然扎根产业和消费者
    二手车商城交易网站平台(Java+SSM+MySQL)
    NineData云原生智能数据管理平台新功能发布|2024年2月版
    区块链技术:解密去中心化的革命
    【寻路】超级简单的A星寻路算法实现
    量子计算进阶:量子计算机的组建和量子计算原理(包含相关论文推荐60篇)
    SpringClouldAlibaba 之 Sentinel流控规则同步到nacos(并重新生成镜像)
    【云原生 · Kubernetes】apiserver高可用
    DAQ高频量化平台:引领Ai高频量化交易模式变革
    android webview加载第三方网页,<select>控件无法弹出的问题
  • 原文地址:https://blog.csdn.net/weixin_43874650/article/details/134278586
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号