​​Spring6梳理17——基于XML的自动装配

以上笔记来源:
尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc

目录

①引入

②场景模拟

2.1  创建UserController类文件

 2.2  创建UserService接口文件

 2.3  创建UserServiceImpl实现类文件

2.4  创建UserDao接口文件

2.5  创建UserDaoImpl实现类文件 

2.6  创建XML配置文件

2.6.1  根据类型进行自动装配

 2.6.2  根据名称进行自动装配

2.6  创建测试类文件

2.7  运行截图

③总结


①引入

自动装配:根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类型属性赋值

②场景模拟

2.1  创建UserController类文件

package com.atguigu.spring6.iocxml.auto.controller;import com.atguigu.spring6.iocxml.auto.dao.UserDao;
import com.atguigu.spring6.iocxml.auto.dao.UserDaoImpl;
import com.atguigu.spring6.iocxml.auto.service.UserService;
import com.atguigu.spring6.iocxml.auto.service.UserServiceImpl;/*** @package: com.atguigu.spring6.iocxml.auto.controller* @className: UserController* @Description:* @author: haozihua* @date: 2024/10/19 16:34*/
public class UserController {private UserService userService;public void setUserService(UserService userService) {this.userService = userService;}public void addUser(){System.out.println("Controller方法执行了...");//调用Service的方法userService.addUserService();
//        UserService userService = new UserServiceImpl();
//        userService.addUserService();}
}

 2.2  创建UserService接口文件

package com.atguigu.spring6.iocxml.auto.service;public interface UserService {public void addUserService();
}

 2.3  创建UserServiceImpl实现类文件

package com.atguigu.spring6.iocxml.auto.service;import com.atguigu.spring6.iocxml.auto.dao.UserDao;
import com.atguigu.spring6.iocxml.auto.dao.UserDaoImpl;
import com.atguigu.spring6.iocxml.factorybean.User;/*** @package: com.atguigu.spring6.iocxml.auto.service* @className: UserServiceImpl* @Description:* @author: haozihua* @date: 2024/10/19 16:35*/
public class UserServiceImpl implements UserService{private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}@Overridepublic void addUserService() {System.out.println("userService方法执行了...");//调用dao方法userDao.addUserDao();
//        UserDao userDao = new UserDaoImpl();
//        userDao.addUserDao();}
}

2.4  创建UserDao接口文件

package com.atguigu.spring6.iocxml.auto.dao;public interface UserDao {public void addUserDao();
}

2.5  创建UserDaoImpl实现类文件 

package com.atguigu.spring6.iocxml.auto.dao;/*** @package: com.atguigu.spring6.iocxml.auto.dao* @className: UserDaoImpl* @Description:* @author: haozihua* @date: 2024/10/19 16:38*/
public class UserDaoImpl implements UserDao {@Overridepublic void addUserDao() {System.out.println("addUserDao方法执行了...");}
}

2.6  创建XML配置文件

2.6.1  根据类型进行自动装配

<?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="userController" class="com.atguigu.spring6.iocxml.auto.controller.UserController"autowire="byType"></bean><bean id="userService" class="com.atguigu.spring6.iocxml.auto.service.UserServiceImpl"autowire="byType"></bean><bean id="userDao" class="com.atguigu.spring6.iocxml.auto.dao.UserDaoImpl"></bean></beans>

 2.6.2  根据名称进行自动装配

<?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="userController" class="com.atguigu.spring6.iocxml.auto.controller.UserController"autowire="byName"></bean><bean id="userService" class="com.atguigu.spring6.iocxml.auto.service.UserServiceImpl"autowire="byName"></bean><bean id="userDao" class="com.atguigu.spring6.iocxml.auto.dao.UserDaoImpl"></bean></beans>

2.6  创建测试类文件

package com.atguigu.spring6.iocxml.auto;import com.atguigu.spring6.iocxml.auto.controller.UserController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @package: com.atguigu.spring6.iocxml.auto* @className: Test* @Description:* @author: haozihua* @date: 2024/10/19 17:01*/
public class TestUser {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("bean-auto.xml");UserController userController = context.getBean("userController", UserController.class);userController.addUser();}
}

2.7  运行截图

③总结

实现XML的自动装配一共有两种方式可以实现,通过类型和名称均可以进行装配,需要注意的是,当按照类型进行自动装配时,需要注意接口的实现类是否有多个,当接口的实现类有多个时,就会产生如下异常,需要注意。

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.atguigu.spring6.bean.HelloWorld' available: expected single matching bean but found 2: helloworldOne,helloworldTwo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454825.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于jmeter中没有jp@gc - response times over time

1、问题如下&#xff1a; jmeter没有我们要使用的插件 2、解决方法&#xff1a; 选择下面文件&#xff0c;点击应用&#xff1b; 3、问题解决 ps&#xff1a;谢谢观看&#xff01;&#xff01;&#xff01;

Java面向对象(三)(抽象和封装)(自己学习整理的资料)

一.类的提炼过程 从现实生活中归纳总结出&#xff0c;多种相同物种&#xff0c;具有的相同的特性&#xff08;属性&#xff0b;行为&#xff09;提炼到一个容器里&#xff0c;给这个容器起一个名字&#xff0c;名字就是类。 步骤&#xff1a; 发现类&#xff08;Dog&#xff…

亿佰特STM32MP13工业核心板【学习】

资料链接&#xff1a;ebyte.com/serchlist.aspx?keyECK10 加屏蔽罩的方法确实可以防EMC干扰防水防潮&#xff1a; 宽度: 16 位宽表示数据总线的宽度&#xff0c;意味着每次可以传输 16 位的数据。这在某些应用中可以提高内存带宽。电压: DDR3L SDRAM 的工作电压通常为 1.35V&…

32 类和对象 · 中

目录 一、类的默认成员函数 二、构造函数 &#xff08;一&#xff09;构造函数的特点 &#xff08;二&#xff09;使用例 1、Date类 2、Stack类 &#xff08;三&#xff09;总结 三、析构函数 &#xff08;一&#xff09;析构函数的特点 &#xff08;二&#xff09;使…

scrapy的xpath在控制台可以匹配,但是到了代码无法匹配(无法匹配tbody标签)

问题 使用xpath-helper可以匹配到,然后scrapy却无法 然后写入html来看看 发现根本就没有tbody,太可恶了 解决 方法1 不使用tbody就可以 方法2 使用或运算符 | big_list response.xpath("//div[classChannelClasssNavContent]/table/tbody/tr[1]/td/table/tbody/t…

Android OpenGL天空盒

在我们的项目学习过程中&#xff0c;我们从一片漆黑的虚空开始构建。为了给这个世界增添一些色彩&#xff0c;我们加入了三个粒子喷泉&#xff0c;但即便如此&#xff0c;我们的世界依然大部分被黑暗和虚无所笼罩。这些喷泉仿佛悬浮在无尽的黑暗之中&#xff0c;没有边界&#…

玫瑰花HTML源码

HTML源码 <pre id"tiresult" style"font-size: 9px; background-color: #000000; font-weight: bold; padding: 4px 5px; --fs: 9px;"><b style"color:#000000">0010000100000111101110110111100010000100000100001010111111100110…

unity学习-全局光照(GI)

在全局光照&#xff08;Lighting&#xff09;界面有两个选项 Realtime Light&#xff08;实时光照&#xff09;&#xff1a;在项目中会提前计算好光照以及阴影的程序&#xff0c;当你需要调用实时全局光照的时候会将程序调用出来使用 Mixed Light&#xff08;烘焙光照&#x…

Nova-Admin:基于Vue3、Vite、TypeScript和NaiveUI的开源简洁灵活管理模板

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和工作学习方法 Nova Admin是一个基于Vue3、Vite、TypeScript和NaiveUI的简洁灵活的管理模板。这个项目旨在为开发者提供一个现代化、易于定制的后台管理界面解决方案。无…

什么是3D模型?如何进行3D建模?应用领域有哪些?

3D模型是在计算机图形学中&#xff0c;为某个表面或物体在专用软件中创建的数字形象&#xff0c;它代表了一个物理实体在三维空间中的形态。以下是对3D模型的详细解释及实现方式的介绍&#xff1a; 一、3D模型的定义 概念&#xff1a;3D模型&#xff0c;即三维模型&#xff0…

springboot+vue的宠物医院管理系统(源码+lunwen)

基于vuespringboot的宠物医院管理系统&#xff0c;分为前台页面和后台管理端。 前台页面&#xff1a; 用户注册与登录&#xff1a;用户可以创建账户并登录系统&#xff0c;以便预约服务、查看个人信息等。宠物信息管理&#xff1a;用户可以添加、编辑和删除自己的宠物信息&am…

数字后端实现静态时序分析STA Timing Signoff之min period violation

今天给大家分享一个在高性能数字IC后端实现timing signoff阶段经常遇到的min period violation。大部分时候出现memory min period问题基本上都是需要返工重新生成memory的。这是非常致命的错误&#xff0c;希望大家在做静态时序分析时一定要查看min period violation。 什么是…

RabbitMQ 发布确认模式

RabbitMQ 发布确认模式 一、原理 RabbitMQ 的发布确认模式&#xff08;Publisher Confirms&#xff09;是一种机制&#xff0c;用于确保消息在被 RabbitMQ 服务器成功接收后&#xff0c;发布者能够获得确认。这一机制在高可用性和可靠性场景下尤为重要&#xff0c;能够有效防止…

数据结构——顺序表的基本操作

前言 介绍 &#x1f343;数据结构专区&#xff1a;数据结构 参考 该部分知识参考于《数据结构&#xff08;C语言版 第2版&#xff09;》24~28页 补充 此处的顺序表创建是课本中采用了定义方法为SqList Q来创建&#xff0c;并没有使用顺序表指针的方法&#xff0c;具体两个…

TCL中环开工率下滑,员工集体要求解约赔偿

“ 尽管中环的市占率有所提高&#xff0c;但是高开工率也带来了巨量硅片库存&#xff0c;严重拖累了公司业绩。 ” 转载&#xff1a;科技新知 原创 作者丨依蔓 编辑丨蕨影 因大幅下调开工率&#xff0c;光伏硅片龙头TCL中环疑似遭遇员工“离职潮”&#xff1f; 近日&…

[云] 创建 Docker 镜像,将其推送到 Amazon Elastic Container Registry (ECR),并对已部署的应用程序进行负载测试

在此作业中&#xff0c;您将学习如何使用 AWS Lambda 和 API Gateway 将机器学习模型部署为无服务器应用程序。您将创建 Docker 镜像&#xff0c;将其推送到 Amazon Elastic Container Registry (ECR)&#xff0c;并对已部署的应用程序进行负载测试。此外&#xff0c;您还将分析…

【KEIL那些事 4】CMSIS缺失!!!!导致不能编译!!!!软件自带芯片下载缓慢!!!!!!快速下载芯片包!!!!!

安装了keli发现emmm&#xff0c;CMSIS缺失&#xff01;&#xff01;&#xff01;&#xff01;不能编译&#xff0c;&#xff0c;&#xff0c;自带下载芯片缓慢&#xff0c;&#xff0c;&#xff0c;官网下载emmm&#xff0c;竟然不带动的&#xff01;&#xff01;&#xff01;&…

数据库集群

主从复制 作用&#xff1a; 1.做数据的热备&#xff0c;作为后备数据库&#xff0c;主数据库服务器故障后&#xff0c;可切换到从数据库继续工作&#xff0c;避免数据丢失。 2.架构的扩展。业务量越来越大&#xff0c;I/O访问频率过高&#xff0c;单机无法满足&#xff0c;此…

基于node.js宜家宜业物业管理系统【附源码】

基于node.js宜家宜业物业管理系统 效果如下&#xff1a; 系统首页界面 业主登录界面 停车位页面 小区公告页面 管理员登录界面 管理员功能界面 物业管理员管理界面 缴费信息管理界面 物业管理员功能界面 研究背景 近年来互联网技术飞速发展&#xff0c;给人们的生活带来了极…

《云计算网络技术与应用》实训6-1:配置KVM虚拟机使用NAT网络

任务1、计算节点基础环境准备 1. 使用VMware安装CentOS 7虚拟机&#xff0c;安装时记得开启CPU虚拟化&#xff0c;命名为“KVMC6”。 2. &#xff08;网卡配置和之前的一样&#xff0c;都用100网段&#xff09;网关设置为192.168.100.1&#xff0c;地址段为192.168.100.10-25…