关于@Autowired和@Resource注解的问题
我学完spring后,发现自己映射学掌握太差,
在本项目中,如果我想用@Resource代替@Autowired
我知道@Resource先按名字查找注入,
所以我在UserServiceImpl这个类上使用了@Service("userService"),以便在UserController中利用@Resource注入
=================================
UserServiceImpl
==========================================
UserController
========================================
我有以下几个问题:
1.如果我在UserServiceImpl类中想要用@Resource注解代替@ Autowired注解,我怎么确定哪个具体的类的对象被注入到userMapper中了? 这个UserMapper不像UserService接口把具体的实现类(UserServiceImpl)写出来了,所以我可以清楚的知道我在UserController中利用@Resource注入的是UserServiceImpl的对象.
2.如果我在UserServiceImpl类中只是用了@Service()没有用@Service("userService"),在Ioc容器中UserServiceImpl类的bean名字自动是userServiceImpl而不是userService对吗?
3.第三个问题和第一问有点关联,我理解的是userMapper类的具体实现类是由UserMapper.xml通过反射生成的,那么生成的类对象都会交给Ioc统一管理吗?那么具体的bean名称是什么?我们有什么
方法可以控制bean的名称
正在回答 回答被采纳积分+1
同学你好,
1、当@Resource设置name属性时,则会按照name在IOC容器中将bean注入
若未设置,以属性名作为bean name 在IoC容器中匹配bean,如有匹配则注入
若按属性名未匹配,则按类型进行匹配
注:建议同学回顾之前的课程去回顾上述两个注解
https://class.imooc.com/course/1406
2、是的,默认是当前类名,但是首字母小写
3、1)是通过JDK动态代理方式实现的,我们在启动加载配置文件的时候,会根据mapper的xml文件去生成一个DAO的实现
2)mapper.xml文件与对应接口建立关系,需要通过namespace,而这里说的bean与其关系不是很理解
祝学习愉快~
- 参与学习 人
- 提交作业 9400 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星