码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Spring(十一)- Spring Bean的依赖注入注解


    文章目录

    • 一、Spring Bean的依赖注入注解
      • 1. 通过@Value直接注入普通属性
      • 2. 通过@Value注入properties文件中的属性
      • 3. @Autowired注解,用于根据类型进行注入
      • 4. @Qualifier配合@Autowired可以完成根据名称注入Bean实例,使用@Qualifier指定名称
      • 5. @Resource注解既可以根据类型注入,也可以根据名称注入,无参就是根据类型注入,有参数就是根据名称注入

    一、Spring Bean的依赖注入注解

    Bean依赖注入的注解,主要是使用注解的方式替代xml的 < property> 标签完成属性的注入操作

    <bean id="" class=""> <property name="" value=""/>
    	<property name="" value=""/>
    	<property name="" ref=""/>
    bean>
    
    • 1
    • 2
    • 3
    • 4

    Spring主要提供如下注解,用于在Bean内部进行属性注入的:
    在这里插入图片描述

    1. 通过@Value直接注入普通属性

    // 方式一
    @Value("haohao")
    private String username;
    
    // 方式二
    @Value("haohao")
    public void setUsername(String username){
    	System.out.println(username);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2. 通过@Value注入properties文件中的属性

    加载properties文件

    <context:property-placeholder location="classpath:jdbc.properties"/>
    
    • 1
    // 方式一
    @Value("${jdbc.username}")
    private String username;
    
    // 方式二
    @Value("${jdbc.username}")
    public void setUsername(String username){
    	System.out.println(username);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3. @Autowired注解,用于根据类型进行注入

    // 使用在属性上直接注入
    @Autowired
    private UserDao userDao;
    
    // 使用在方法上直接注入
    @Autowired
    public void setUserDao(UserDao userDao){
    	System.out.println(userDao);
    }
    
    // 使用在方法上直接注入,可以注入同一类型的多个bean,例如userDao、userDao2...
    @Autowired
    public void yyy(List<UserDao> userDaoList){
    	System.out.println(userDaoList);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    当容器中同一类型的Bean实例有多个时,会尝试自动根据名字进行匹配:

    // 匹配当前Bean
    @Repository("userDao")
    public class UserDaoImpl implements UserDao{}
    
    @Repository("userDao2")
    public class UserDaoImpl2 implements UserDao{}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4. @Qualifier配合@Autowired可以完成根据名称注入Bean实例,使用@Qualifier指定名称

    @Autowired
    @Qualifier("userDao2")
    private UserDao userDao;
    
    @Autowired
    @Qualifier("userDao2")
    public void setUserDao(UserDao userDao){
    	System.out.println(userDao);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5. @Resource注解既可以根据类型注入,也可以根据名称注入,无参就是根据类型注入,有参数就是根据名称注入

    @Resource
    private UserDao userDao;
    
    @Resource(name = "userDao2")
    public void setUserDao(UserDao userDao){
    	System.out.println(userDao);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    PS:@Resource注解存在与 javax.annotation 包中,Spring对其进行了解析

  • 相关阅读:
    30天Python入门(第二十七天:深入了解Python MongoDB)
    千兆以太网传输层 UDP 协议原理与 FPGA 实现(UDP接收)
    【网络编程实例】C++11实现基于TCP的回射服务器和客户端通信
    SpringBoot+mail 轻松实现各类邮件自动推送
    C++ opencv 学习
    【SpringBoot 】策略模式 之 一键切换文件上传方式
    架构思考 (六)
    黑猫带你学Makefile第1篇:程序编译的过程
    从架构出发探究Electron运行原理
    PixelSNAIL论文代码学习(3)——自注意力机制的实现
  • 原文地址:https://blog.csdn.net/qq_36602071/article/details/127892544
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号