这里明明有两个UserDao的实现类,且实现类没有做任何处理,为什么没有出现老师视频里的错误

这里明明有两个UserDao的实现类,且实现类没有做任何处理,为什么没有出现老师视频里的错误

IUserDao接口类

1
2
3
4
package com.imooc.spring.ioc.dao;
 
public interface IUserDao {
}

UserDao类

1
2
3
4
5
6
7
8
9
10
11
12
package com.imooc.spring.ioc.dao;
 
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Repository;
//组件类型注解默认beanId为类名首字母小写
//beadId = userDao
@Repository
public class UserDao implements IUserDao{
    public UserDao(){
        System.out.println("正在创建UserDao:" this);
    }
}

UserOracleDao类

1
2
3
4
5
6
7
8
9
10
11
package com.imooc.spring.ioc.dao;
 
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Repository;
 
@Repository
public class UserOracleDao implements IUserDao {
    public UserOracleDao(){
        System.out.println("正在创建UserOracleDao:" this);
    }
}

UserService类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.imooc.spring.ioc.service;
 
import com.imooc.spring.ioc.dao.IUserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class UserService {
 
    public UserService(){
        System.out.println("正在创建UserService:" this);
    }
    @Autowired
    private IUserDao userDao;
 
    public IUserDao getUserdao() {
        return userDao;
    }
 
//    public void setUserDao(IUserDao userDao) {
//        System.out.println("setUdao:" + userDao);
//        this.userDao = userDao;
//    }
}

SpringApplication类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.imooc.spring.ioc;
 
import com.imooc.spring.ioc.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class SpringApplication {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
//        String[] ids = context.getBeanDefinitionNames();
//        for(String id :ids){
//            System.out.println(id+":"+context.getBean(id));
//        }
 
        UserService userService = context.getBean("userService", UserService.class);
        System.out.println(userService.getUserdao());
    }
 
 
}

运行结果:

https://img1.sycdn.imooc.com//climg/652ab46c09705d9e13980380.jpg

两个实现类被同时创建了

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2023-10-16 09:35:10

同学你好,测试同学代码是会出现冲突问题的,如下所示:没有出现问题可能是项目的问题,建议同学在课程源码中测试一下,查看是否存在该问题。

https://img1.sycdn.imooc.com//climg/652c930409639f7a17860699.jpg

祝学习愉快!

  • 提问者 _大臣呀 #1

    课程源码没问题,自己的项目将属性名userDao改成udao就会出现冲突问题,这是啥原因啊

    2023-10-16 11:04:17
  • 好帮手慕小尤 回复 提问者 _大臣呀 #2

    同学你好,可能是之前项目存在缓存,从而导致修改后没有及时更新导致的。

    祝学习愉快!

    2023-10-16 11:51:50
  • 提问者 _大臣呀 回复 好帮手慕小尤 #3

    怎么清除缓存呢

    2023-10-19 09:18:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java工程师 2024版
  • 参与学习       2037    人
  • 提交作业       1409    份
  • 解答问题       1268    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码