开发者

Spring Autowiring class vs. interface?

I have this Spring config:

<bean id="boo" class="com.x.TheClass"/>

The class TheClass implements TheInterface. Then I have this (hypothetical) Java code:

@Autowired
TheInterface x;

@Autowired
TheClass y;

Th开发者_Python百科e autowiring of TheInterface works but the autowiring of TheClass fails. Spring gives me a NoSuchBeanDefinitionException for the class.

Why can you wire the interface and not the class?


Normally, both will work, you can autowire interfaces or classes.

There's probably an autoproxy generator somewhere in your context, which is wrapping your boo bean in a generated proxy object. This proxy object will implement TheInterface, but will not be a TheClass. When using autoproxies, you need to program to the interface, not the implementation.

The likely candidate is transactional proxies - are you using Spring transactions, using AspectJ or @Transactional?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜