Spring中关于getBean()报强制转化错误

article/2025/10/26 3:36:13

        在自学Spring时,在使用getBean()时,会报com.sakura.dao.impl.BookDaoImpl cannot be cast to com.sakura.dao.BookDao  at com.sakura.App2.main(App2.java:19)

这个错误表示,不能将一个实现类BookDaoImpl类强转为BookDao接口。这个错,通过反复看代码,发现是 BookDaoImpl没有实现BookDao接口。

代码结构如下:

 其中dao中存在一个接口类BookDao,impl中实现接口实现类BookDaoImpl,App2为spring获取IoC容器获取bean代码如下

BookDao接口类 

package com.sakura.dao;/*** @author sakura* @date 2022年10月18日-星期二-22:24* @description 接口类*/
public interface BookDao {public void save();
}

BookDaoImpl接口实现类 

package com.sakura.dao.impl;import com.sakura.dao.BookDao;/*** @author sakura* @date 2022年10月18日-星期二-22:22* @description BookDao接口实现类*/
public class BookDaoImpl implements BookDao {public void save(){System.out.println("book dao save...");}
}

bean配置文件 

<?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找到对应的实现类
--><bean  id="bookDao" class="com.sakura.dao.impl.BookDaoImpl"/>
<!--
bean标签表示配置bean
id属性表示给bean取名字
class属性表示给bean定义类型
-->
</beans>

 获取IoC容器,得到bean文件

package com.sakura;import com.sakura.dao.BookDao;
import com.sakura.dao.impl.BookDaoImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @author sakura* @date 2022年10月19日-星期三-16:04* @description 获取Bean*/
public class App2 {public static void main(String[] args) {//3、获取IoC容器//是一个接口,new一个ClassPathXmlApplicationContext,获得配置得到的application.xml文件ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");//4.获取beanBookDao bookDao = (BookDao) ctx.getBean("bookDao");bookDao.save();}
}

其中getBean()方法有两种实现方法:

一种就直接强转为接口类BookDao

 BookDao bookDao = (BookDao) ctx.getBean("bookDao");

另外一种是在getBean()文件中默认设定获得对象类型:

 BookDao bookDao = (BookDao) ctx.getBean("bookDao","BookDaoImpl.class");

最近天天都是课,所有更新比较缓慢。

希望此次的分享可以帮助到你,后续博主会更新更多关于ssm的内容,如果哪天有空,博主会更新mybatis的全套内容。


http://chatgpt.dhexx.cn/article/l5ioy43I.shtml

相关文章

spring源码解读之getBean方法(一)

前言 大家使用spring&#xff0c;最常接触到的就是bean&#xff0c;大家也知道spring中用一句getBean就能取出一个实例化好的bean&#xff0c;这个bean是属于IOC容器管理的&#xff0c;那么大家有没有看过getBean方法的源码呢&#xff0c;知不知道spring容器到底是怎么得到一个…

Spring源码之getBean(获取 bean)方法(一)解读

目录 测试类一个简单的测试类对于 ApplicationContext 和 ClassPathXmlApplicationContext 类图如下getBean() 源码解读查看 AbstractApplicationContext 中的 getBean 方法查看 AbstractBeanFactory 的 doGetBean 方法看 doGetBean 方法的流程图分析doGetBean 方法的主要流程 …

JavaBean(set和get方法)

JavaBean的规范 类中所有的成员属性都是私有&#xff0c;也就是 private 来修饰 提供一个公共无参数的构造方法 为所有私有的属性提供公共的 set 和 get 方法。 set方法 set 方法是有参数无返回值的&#xff0c;目的是通过 set 方法给 javabean 中的私有属性赋值&#xff0c;…

getBean方法源码

一、 三个API // 根据name获取bean Override public Object getBean(String name) throws BeansException {return doGetBean(name, null, null, false); }// 根据name获取bean&#xff0c;如果获取到的bean和指定类型不匹配&#xff0c;则抛出异常 Override public <T>…

详解Spring中getBean()方法

我们日常会经常使用getBean()方法从spring容器中获取我们需要的bean。那么&#xff0c;getBean()方法是怎么一步步完成从spring容器中获取bean的呢&#xff1f; 下面我们就通过源码分析一下。 一、主要代码分析 基于&#xff1a;spring5.1 入口&#xff1a;AbstractBeanFactory…

getBean方法(一)

我们先看看这个方法的轮廓流程 这个getbean的轮廓方法很长. 先分两种情况: 一种是在缓存实例中能拿到bean, (主要是factroyBean的处理, 执行所有已注册的 BeanPostProcessor 的 postProcessAfterInitialization 方法) 前边是校验 (如果name以“&”为前缀&#xff0c;但是b…

Spring源码分析之getBean主流程分析

当我们通过向Spring容器获取某个bean的时候&#xff0c;总是调用Spring中重载的各种getBean方法。那么&#xff0c;getBean中的流程是什么样的&#xff1f; 通过本文&#xff0c;你将对getBean方法的主流程有一个详细的认识。 入口当然是getBean方法&#xff1a; public Obje…

getBean( )流程

getBean() 方法是顶层接口 BeanFactory 提供的&#xff0c;一共五个原型。AbstractBeanFactory作为抽象实现&#xff0c;复写了其中3个方法&#xff0c; Overridepublic Object getBean(String name) throws BeansException {return doGetBean(name, null, null, false);}Overr…

Prometheus监控MongoDB数据库

监控环境&#xff1a;Prometheus 数据库&#xff1a;MongoDB 3.4.6 集群&#xff0c;3个节点 监控工具&#xff1a;mongodb_exporter 我这个模板是自己二次开发的。使用mongodb_exporter 监控 阿里云的MongoDB数据库 各位根据自己的需求进行使用 1、创建Mongodb监控可读账…

DBeaver 数据库管理工具

DBeaver 数据库管理工具 DBeaver 是一个基于 Java 开发&#xff0c;免费开源的通用数据库管理和开发工具&#xff0c;使用非常友好&#xff0c;且遵循ASL 协议。由于 DBeaver 基于 Java 开发&#xff0c;可以运行在各种操作系统上&#xff0c;比如Windows、Linux、macOS 等操作…

mysql数据库监控

MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关系数据…

一些数据库监控,优化,管理工具

http://www.itpub.net/viewthread.php?tid1057814&extra&page1 一些数据库监控,优化,管理工具 ******************************************************************* 这两天网盘连不上了&#xff0c;导致国内用户暂时无法下载。大家下载时需要用代理。这里提供一个比…

oracle实时监控工具

oracle实时监控工具市面上不多&#xff0c;但是兼具数据维护管理及性能实时监控的工具可以说更少&#xff0c;而实时监控又是项目运维管理&#xff0c;测试&#xff0c;开发但环节不可少的功能&#xff0c;目前有一款JAVA开发的&#xff0c;基于WEB的&#xff1a;TreeSoft数据库…

数据库的可用监控

监控 数据库是否连接和读写以及数据库的连接数 1、确认数据库是否可以通过网络连接 造成连接不成功的原因&#xff1a;防火墙 TCP/IP连接被占满 监控的方式&#xff1a; 1、mysqladmin -u 监控用户 -p 密码 -h 监控的服务器地址 ping 首先我们在MySQL下要建立一个mysql 的用户…

数据库实时监控,实时监控数据库数据

为了满足大多数用户对数据库的监控和运维需求&#xff0c;系统实时采集了监控数据库的主要指标&#xff0c;并提供完整的报警、性能容量分析和报告功能。  系统以数字形式收集现场设备发送的数据&#xff0c;通过实时数据操作实现监控功能&#xff0c;并提供有利于监控生产过…

数据库监控工具SQL Monitor:可同时实现云和本地的SQL Server数据库监视

SQL Monitor提供了一个基于Web的监视&#xff0c;在桌面计算机和移动设备上实时地监控服务器的性能。使用SQL Monitor时&#xff0c;只要一出现问题&#xff0c;你将会通过邮件和用户界面接收到警告&#xff0c;SQL Monitor会快速地做全局检查&#xff0c;检查单机&#xff0c;…

mysql实时监控工具

mysql实时监控工具市面上有许多了&#xff0c;但是兼具数据维护管理及性能实时监控的工具不多&#xff0c;可以说很少&#xff0c;而实时监控又是项目运维管理&#xff0c;测试&#xff0c;开发但环节不可少的功能&#xff0c;目前有一款JAVA开发的&#xff0c;基于WEB的&#…

数据库监控

数据库监控 一、数据库监控介绍 1、对什么进行监控 (1) 对数据库服务可用性进行监控 数据库进程或是端口存在并不意味着数据库就是可用的&#xff1b; 通过网络连接到数据库并且确定数据库是可以对外提供服务的。 (2) 对数据库性能进行监控 QPS和TPS&#xff1b; 并发线程数量…

MySQL - 数据库的监控方式

对于当前数据库的监控方式有很多&#xff0c;分为数据库自带、商用、开源三大类&#xff0c;每一种都有各自的特色&#xff1b; 而对于 mysql 数据库由于其有很高的社区活跃度&#xff0c;监控方式更是多种多样&#xff0c;不管哪种监控方式最核心的就是监控数据&#xff0c;获…

现在的SQLSERVER数据库监控软件有哪些?

现在的SQLSERVER数据库监控软件有哪些&#xff1f; 收集了一下当前SQLSERVER数据库监控软件&#xff0c;发现开源免费的真的是“没有” Questsoftware Quests spotlight&#xff08;收费&#xff09; http://www.quest.com/search/search-results.aspx?qspotlight Ideras S…