为了账号安全,请及时绑定邮箱和手机立即绑定

关于Component有一点疑问

给我的感觉,@Component可以代替之前xml上定义的beanid ,让super.getBean()。 

那么在只BeanInvoker上定义了就行了啊。

为什么@Component , 除了在BeanInvoker定义,还要在接口的实现类上都定义了?

而我测试发现, 不能不定义, 否则就报错。


正在回答

1 回答

@Component注解的Target是类,接口是不能实例化的。注解在接口上没有意义。就如xml定义beanid后,beanid对应的实例化的类一定是实现类而不是接口。两者是同理的。

0 回复 有任何疑惑可以回复我~
#1

风中过客 提问者

这个知道 , 但是 这里 视频是通过getBean得到的 BeanInvoker , 让 beanInvoke去调用 那个实现类的方法。 所以 我认为 只在BeanInvoker上@Component就够了。。。
2016-02-23 回复 有任何疑惑可以回复我~
#2

河边的大巫 回复 风中过客 提问者

且不说实现接口不是继承关系,即使是继承关系,@Componet注解在父类也是不能被子类继承的。 另外,你说的让beanInvoker去调用那个实现类的方法,这个说法是有问题的。视频中通过getBean得到不是你所说的接口BeanInvoker,而是得到一个实现了BeanInvoker接口的实现类的实例。 你可能需要复习一下java面对对象的有关内容,就发现这个问题不难理解了。
2016-02-24 回复 有任何疑惑可以回复我~
#3

Massami 回复 风中过客 提问者

如果只注解BeanInvoker的话,其他的不注解。相当于在xml文件中只配置了BeanInvoker而其他的没有配置,在使用接口实现类的方法时,连实现类的实例都没有,还怎么调用他的方法呢?
2016-07-26 回复 有任何疑惑可以回复我~
#4

风中过客 提问者 回复 Massami

就是只配置了bean, 没有装配属性。 为那两个实现类注解Component可以让其成为bean,再让 beanInoker中的@autowired将其装配到自己的属性中。
2016-07-29 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

关于Component有一点疑问

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信