属性注入不了

正在回答

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

4回答

@Autowired 和@Resource的区别

@Autowired是spring制定的的

@Resource 是J2EE制定的



@Autowired先按类型查找,如果有实现了同一个接口的两个类就按名字查找,如果没有匹配成功就会出现异常  此时可以用@Qulifier指定注入哪个对象

 

@Resource先按名字查找 ,如果没有匹配成功就按类型匹配,如果匹配到多个就会出现异常  此时可以用@Resource(name="")指定注入哪个bean



@Autowired不能指定两个同类型的对象,要不就会报错

  • 音殿 提问者 #1
    em..主要就是很奇怪 我只用了 我一个接口并没有实现多个类 只有一个 我不知道第二个同名的类是哪里来的 搞得匹配不了。
    2018-11-29 19:10:27
  • 慕布斯37364 回复 提问者 音殿 #2
    我猜就是idea校验的事儿,严谨一些总是没错了,你按照严谨的方式去写就好了,就像之前那个老师说的,用2017班的idea就没事儿,并且也确实只有一个,所以你就按照严谨的方法去注入就好了。
    2018-11-30 09:33:56
提问者 音殿 2018-11-29 17:20:30
  • 你好同学,你有重启idea吗?建议你重启一下试试,祝学习愉快~
    2018-11-29 19:03:55
  • 提问者 音殿 回复 chrismorgen #2
    重启过了 重启了 只打开了一个项目 又清了一次缓存 还是老样子 很奇怪。。不知道第二个同名的类哪里出来的。。
    2018-11-29 19:08:27
chrismorgen 2018-11-29 17:01:08

你可以按下图操作来清空tomcat缓存哦,祝学习愉快~

http://img1.sycdn.imooc.com//climg/5bffaaba00017c9502730553.jpg

  • 提问者 音殿 #1
    老师 我把那个缓存清了 然后就可以了 但是下面的读条读完之后 又报错了。。是因为我同时打开了源代码和我自己跟着敲的代码吗? 但是我后来又把源代码的项目关闭了 再清除了缓存 再打开一个项目 还是这样。。。老师请看上图
    2018-11-29 17:22:03
chrismorgen 2018-11-28 19:02:34

如下图所示,根据报错提示,你有两个DepartmentDao类型,所以使用@Autowired会出错,建议你使用@Resource(name="deparmentDao")根据名称注入试试,祝学习愉快~

http://img1.sycdn.imooc.com//climg/5bfe6fd70001379803680116.jpg

  • 提问者 音殿 #1
    写了Resource后好像可以了 但是为什么不能用@Autowired呢?我没看到我哪里有写了两个 DepartmentDao类呀
    2018-11-28 19:10:19
  • 提问者 音殿 #2
    刚刚我全部类点开了一遍 发现好多个实体类的自动注入突然都报错了 是为什么??
    2018-11-28 19:12:44
  • 好帮手慕阿莹 回复 提问者 音殿 #3
    应该是idea版本的事儿,我试了一下2017版的idea是没事儿的,比较的新的idea应该是要求更加严格的。建议同学使用Resource或者@Autowired配合 @Qualifier("") 试试。祝学习愉快。
    2018-11-29 09:37:30
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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