当前位置: 首页 > news >正文

spring专题笔记(六):bean的自动装配(自动化注入)-根据名字进行自动装配、根据类型进行自动装配。代码演示,通俗易懂。

目录

一、根据名字进行自动装配--byName

二、根据类型进行自动装配 byType


本文章主要是介绍spring的自动装配机制, 用代码演示spring如何根据名字进行自动装配、如何根据类型进行自动装配。代码演示,通俗易懂。

一、根据名字进行自动装配--byName

UserService 类中调用了UserDao 类中的delete()方法

public class UserService {UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void delete(){userDao.delete();}
}
public class UserDao {public void delete(){System.out.print("删除用户信息");}
}

配置如下:

给需要注入对象的bean加上autowire="byName"

注意一:根据名字进行自动装配也是基于set注入方式实现的,所以需要写set方法。set注入一定要有无参构造方法。

注意二:根据名字进行自动装配的时候,被注入的对象的bean的id不能随便写。

必须是set方法的方法名去掉set,剩下的单词首字母变小写

<?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,就在哪个类进行自动装配--><!--根据名字进行自动装配,注意:自动装配也是基于set注入方式实现的--><bean id="UserServiceBean" class="com.linctSpring6.service.UserService" autowire="byName"></bean><!--id一般也叫做bean的名称--><!--根据名字进行自动装配的时候,被注入的对象的bean的id不能随便写--><!--必须是set方法的方法名去掉set,剩下的单词首字母变小写--><bean id="userDao" class="com.linctSpring6.dao.UserDao"></bean></beans>

我们写一个测试类来测试这个方法

   @Testpublic void testUserServiceByName(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("set-bean-autowire.xml");UserService userService = applicationContext.getBean("UserServiceBean", UserService.class);userService.delete();}

可以看到,根据名字自动装配bean成功

二、根据类型进行自动装配 byType

UserService 类中调用了UserDao 类中的delete()方法和StudentDao类中creat()方法

public class UserService {UserDao userDao;StudentDao studentDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void setStudentDao(StudentDao studentDao) {this.studentDao = studentDao;}public void userServicemethod(){userDao.delete();studentDao.creat();}}
public class UserDao {public void delete(){System.out.println("删除用户信息");}
}
public class StudentDao {public void creat(){System.out.println("创建学生信息");}
}

配置如下:

根据类型进行自动装配 byType也是通过set方法来注入的。

byType方法的使用非常简单,给需要注入对象的bean加上autowire="byType",spring就会自动根据类型帮我们的对象注入对应的bean,非常强大。

 <!--根据类型进行自动装配--><bean id="UserServiceBean" class="com.linctSpring6.service.UserService" autowire="byType"></bean><bean id="userDao" class="com.linctSpring6.dao.UserDao"></bean><bean id="studentDao" class="com.linctSpring6.dao.StudentDao"></bean>

 可以看到,根据类型自动装配bean成功

注意点:如果同一个配置文件中写注入了2个相同的baen,则会报错

所以根据类型进行自动装配,某一类型的实例只能有一个。

报错如下:

以上就是我对bean的自动装配(自动化注入)的理解啦,希望能帮到大家,有问题的地方欢迎大家一起讨论!

后续会不断更新作品,欢迎大家一起讨论学习。❤❤❤

相关文章:

spring专题笔记(六):bean的自动装配(自动化注入)-根据名字进行自动装配、根据类型进行自动装配。代码演示,通俗易懂。

目录 一、根据名字进行自动装配--byName 二、根据类型进行自动装配 byType 本文章主要是介绍spring的自动装配机制&#xff0c; 用代码演示spring如何根据名字进行自动装配、如何根据类型进行自动装配。代码演示&#xff0c;通俗易懂。 一、根据名字进行自动装配--byName Us…...

监听器listener

文章目录 监听器( listener)对Application内置对象监听的语法和配置对session内置对象监听的语法和配置 监听器( listener) 对象与对象的关系&#xff1a; 继承关联 tomcat一启动创建的顺序&#xff1a;监听器&#xff0c;config&#xff0c;application(全局初始化参数)&am…...

重温设计模式--10、单例模式

文章目录 单例模式&#xff08;Singleton Pattern&#xff09;概述单例模式的实现方式及代码示例1. 饿汉式单例&#xff08;在程序启动时就创建实例&#xff09;2. 懒汉式单例&#xff08;在第一次使用时才创建实例&#xff09; 单例模式的注意事项应用场景 C代码懒汉模式-经典…...

Flutter动画学习二

如何在 Flutter 中使用自定义动画和剪裁&#xff08;clipping&#xff09;实现一个简单的动画效果。 前置知识点学习 AnimationController AnimationController 是 Flutter 动画框架中的一个核心类&#xff0c;用于控制动画的生命周期和状态。它提供了一种灵活的方式来定义动…...

讯飞语音听写WebApi(流式)【React Native版】

假设已有 Base64 编码的音频文件(16kHz, s16le, pcm) 1、获取websocket url import * as CryptoJS from crypto-js;/*** 获取websocket url*/ const getWebSocketUrl () > {const config {// 请求地址hostUrl: "wss://iat-api.xfyun.cn/v2/iat",host: "i…...

【Linux编程】一个基于 C++ 的 TCP 客户端异步(epoll)框架(一))

TcpClient 类的设计与实现&#xff1a;一个基于 C 的 TCP 客户端框架 在现代网络编程中&#xff0c;TCP&#xff08;传输控制协议&#xff09;客户端是实现网络通信的基础组件之一。本文将详细介绍一个基于 C 的 TcpClient 类的设计与实现&#xff0c;该类提供了创建 TCP 连接…...

PG备份恢复--pg_dump

pg_dump pg_dump 是一个逻辑备份工具。使用 pg_dump 可以在数据库处于使用状态下进行一致 性的备份,它不会阻塞其他用户对数据库的访问 。 一致性备份是 pg_dump 开始运行时&#xff0c;给数据库打了一个快照&#xff0c;且在 pg_dump 运行过程 中发生的更新将不会被备份。 …...

pikachu靶场搭建详细步骤

一、靶场下载 点我去下载 二、靶场安装 需要的环境&#xff1a; mysqlApaches&#xff08;直接使用小皮面板Phpstudy&#xff1a;https://www.xp.cn/&#xff09;&#xff0c;启动他们 设置网站&#xff0c;把靶场的路径对应过来 对应数据库的信息 由于没有核对数据库的信…...

HarmonyOS NEXT开发进阶(五):装饰器讲解

一、Provide Consume 父组件与子组件的子组件(官方叫法&#xff1a;后代组件)双向同步数据&#xff08;即&#xff0c;父组件与后代组件可以相互操作 Provide 修饰的数据&#xff09; 注意&#xff1a;Provide 与 Consume声明的变量名必须一致。 import {TestChild } from .…...

【编译原理】往年题汇总(山东大学软件学院用)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;编译原理_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...

【漏洞复现】F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026)

免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作…...

设计模式-创建型-单例模式

1. 单例模式简介 单例模式&#xff08;Singleton Pattern&#xff09;是一种常见的创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供全局访问点。在很多情况下&#xff0c;我们只希望某个类在整个应用程序中有一个唯一的实例&#xff0c;且该实例需要在…...

VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…...

【2024最新】基于Python+Mysql+django的水果销售系统Lw+PPT

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…...

一种寻路的应用

应用背景 利用长途车进行货物转运的寻路计算。例如从深圳到大连。可以走有很多条长途车的路线。需要根据需求计算出最合适路线。不同的路线的总里程数、总价、需要的时间不一样。客户根据需求进行选择。主要有一些细节&#xff1a; 全国的长途车车站的数据的更新&#xff1a; …...

编译openssl遇到错误Parse errors: No plan found in TAP output的解决方法

在编译openssl时 tar -zxvf openssl-1.1.1p.tar.gz cd openssl-1.1.1p ./config --prefix/usr --openssldir/etc/ssl --shared zlib make make test 遇到错误 Parse errors: No plan found in TAP output 解决方法&#xff1a; yum install perl-Test-Simple...

一文大白话讲清楚防抖和节流,设计封装防抖和节流,以及防抖和节流的应用场景

文章目录 一文大白话讲清楚防抖和节流&#xff0c;设计封装防抖和节流&#xff0c;以及防抖和节流的应用场景1. 防抖和节流的背景2. 节流3. 节流的应用场景4. 防抖5. 防抖应用场景 一文大白话讲清楚防抖和节流&#xff0c;设计封装防抖和节流&#xff0c;以及防抖和节流的应用场…...

Windows开启IIS后依然出现http error 503.the service is unavailable

问题背景 已启用IIS服务&#xff0c;配置步骤可以参考Windows10 IIS Web服务器安装配置 问题描述 在这一步浏览网站时&#xff0c;并没有出现默认首页&#xff0c;而是 http error 503 the service is unavailable 问题解决 参考 成功解决http error 503.the service is un…...

C++的封装(十四):《设计模式》这本书

很多C学习者学到对C语言有一定自信后&#xff0c;会去读一下《设计模式》这本书。希望能够提升自己的设计水平。 据我所知&#xff0c;围绕C语言出了很多书。因为正好赶上泡沫经济时代。大家一拥而上&#xff0c;自己半懂不懂就出书&#xff0c;抢着出书收割读者&#xff0c;出…...

牛客周赛73B:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 \hspace{15pt}小红拿到了正整数 xxx &#xff0c;她希望你找到一个长度为 kkk 的区间&#xff0c;满足区间内恰好有 nnn 个数是 xxx 的倍数。你能帮帮她吗&#xff1f; 输入描述: …...

NideShop物流配送系统:如何实现订单发货与快递跟踪的完美集成

NideShop物流配送系统&#xff1a;如何实现订单发货与快递跟踪的完美集成 【免费下载链接】nideshop NideShop 开源微信小程序商城服务端 API&#xff08;Node.js ThinkJS&#xff09; 项目地址: https://gitcode.com/gh_mirrors/ni/nideshop NideShop是一个基于Node.j…...

一站式数据健康解决方案:docta项目架构与核心组件深度剖析

一站式数据健康解决方案&#xff1a;docta项目架构与核心组件深度剖析 【免费下载链接】docta A Doctor for your data 项目地址: https://gitcode.com/gh_mirrors/do/docta docta作为一款强大的数据健康诊断工具&#xff0c;能够帮助用户轻松检测和修复数据集中的标签错…...

车载测试CAPL编程实战:结构(Struct)在车辆信号解析中的应用

1. 为什么车载测试需要结构&#xff08;Struct&#xff09;&#xff1f; 在车载测试领域&#xff0c;我们每天要处理海量的车辆信号数据。想象一下&#xff0c;一辆普通家用车的CAN总线上&#xff0c;每秒可能产生上千条报文&#xff0c;每条报文又包含多个信号值。比如发动机转…...

AsyncESP32_Ethernet_Manager:工业级ESP32以太网配置管理库

1. AsyncESP32_Ethernet_Manager 库深度解析&#xff1a;面向工业嵌入式场景的以太网配置管理方案 1.1 项目定位与工程价值 AsyncESP32_Ethernet_Manager 是一个专为 ESP32 系列微控制器&#xff08;包括 ESP32-S2、ESP32-S3 和 ESP32-C3&#xff09;设计的、基于 LwIP 协议栈…...

Go语言的性能优化:从分析到实践

Go语言的性能优化&#xff1a;从分析到实践 性能优化的重要性 在软件开发中&#xff0c;性能优化是一个永恒的话题。一个高性能的应用程序可以&#xff1a; 提高用户体验&#xff0c;减少响应时间降低服务器成本&#xff0c;提高资源利用率增强系统的可扩展性提升应用程序的竞争…...

Flowable 7.x 实战:手把手教你从前端按钮到后端接口,完整实现流程图查看功能

Flowable 7.x 实战&#xff1a;从前端按钮到后端接口的流程图查看全链路实现 在Spring Boot与Vue/React技术栈的企业级应用中&#xff0c;流程引擎的集成往往需要前后端协同完成功能闭环。本文将以查看流程图功能为切入点&#xff0c;完整呈现从权限控制到图像渲染的全链路实现…...

无缝跨平台体验:APK-Installer让Windows运行Android应用的革命性工具

无缝跨平台体验&#xff1a;APK-Installer让Windows运行Android应用的革命性工具 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化时代&#xff0c;用户常常面临…...

2025届必备的六大AI科研神器实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 专门用于降低重复率的网站&#xff0c;在学术范畴里&#xff0c;是作为辅助学术写作的工具而…...

Pandas读写Parquet文件避坑指南:pyarrow和fastparquet引擎怎么选?columns参数真能省内存吗?

Pandas读写Parquet文件避坑指南&#xff1a;引擎选择与内存优化实战解析 当你第一次听说Parquet格式能比CSV节省80%存储空间时&#xff0c;可能和我一样兴奋地立刻把项目里的数据全转成了.parquet后缀。但真正在生产环境部署时&#xff0c;却发现pd.read_parquet()在不同机器上…...

Laravel Stats Tracker与Google Analytics对比分析:自建统计系统的优势

Laravel Stats Tracker与Google Analytics对比分析&#xff1a;自建统计系统的优势 【免费下载链接】tracker Laravel Stats Tracker 项目地址: https://gitcode.com/gh_mirrors/tr/tracker 在网站分析和用户行为跟踪领域&#xff0c;Google Analytics无疑是业界标杆&am…...