关于注解有个问题

关于注解有个问题

我的项目结构

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

我在service1里注解为

@Service("orderService1")

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

我在service里

@Service("orderService")

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

要不然Test的OrderService会报错有多个注解

http://img1.sycdn.imooc.com//climg/5f940b9a09a6431110410661.jpghttp://img1.sycdn.imooc.com//climg/5f940c6609b4511b10580386.jpg

如果我在Test1中将自动注入的OrderService改成OrderSErviceImpl1

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

是不是注入的就是我Service1的OrderService

还是说没有什么区别,自动注入还是按照Spring自动去判断的。

正在回答

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

2回答

同学你好,在@Service括号中书写bean名称并不是没有意义的。同学可以这样理解:

1、@Service服务层组件,用于标注业务层组件,表示定义一个bean,它关于自动根据bean的类名实例化一个首写字母为小写的bean。

 2、当出现相同类型的实现类,可以通过@Service括号中书写的bean名称来区分,比如:

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

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

@Autowired默认是按照类去匹配,配合 @Qualifier 指定按照名称去装配 bean。

所以在@Service括号中书写bean名称是有意义的。

好帮手慕小班 2020-10-25 10:29:25

同学你好,@Autowired是用来进行自动注入属性,简单点也就是进行赋值操作,并且是按照类型进行匹配赋值。

同学可以这样理解:

在测试类中,如下所示类型为OrderServiceImpl1,对应就会注入类型为OrderServiceImpl1的类

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

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

如果同学想表达的不是这个意思,还麻烦同学具体描述一下自己的问题。

  • 提问者 孬帮手慕小菜 #1
    也就是说在@service(OrderSeervice1)括号里面写的类似于别名的东西没有任何意义,而@AutoWired是根据@service注入的类型public class OrderServiceImpl implement OrderService 这个OrderServiceImpl /或者是OrderServiceImpl1 来判定注入哪个service的对吗?
    2020-10-25 15:04:14
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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