【报错已解决】ApplicationContext报红,已解决

本文讨论了在Spring配置中,将Bean的id设为接口而非实现类时导致的运行错误。通过修改id为接口名称,问题得到解决。作者提到,虽然编程规范通常建议id可以自由命名,但在特定情况下,遵循接口定义可能更为关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

## 目录

1.原代码

2.出现问题的代码

3.正确写法

4.描述

## 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="userDaoImpl" class="com.itheima.dao.impl.UserDaoImpl">
    </bean>
</beans>
import com.itheima.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
//        UserDao userDao = Spring客户端.getBean(id标识)
//        Spring客户端->applicationContext
//        id标识->对象名
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao=(UserDao) applicationContext.getBean("userDao");
        userDao.save();
    }
}

## 2.出现问题的代码    

<bean id="userDaoImpl" class="com.itheima.dao.impl.UserDaoImpl">

## 3.正确写法

    <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl">

## 4.描述

id="xxx",这里的xxx应该是接口而不是实现类

【复盘】

这个问题和解决方案都是想不出来的,偶然那么改了一下,就不报错了。

测试过改回去并运行,依然报错。按上面总结的正确写法来写并运行,不报错。

按说id是可以自己起名的,在实际运行前,id写成接口没事,id写成实现类就报错。

结论——有时候编程也有玄学味。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值