关于Spring 2.5里面的基于注解的配置的一些疑惑

开门见山吧

第一个问题:Spring和iBatis整合的时候,我让一个Dao继承SqlMapClientDaoSupport,我怎样用注解注入sqlMapClient?我不想action和service都用注解注入,但是我的dao得用xml注入。(当然有人会说,可以抽象出一个父类dao,由它在xml里面注入sqlMapClient,然后子类dao就可以用注解注入了,这倒可以的。那有没有直接点的方法呢?)

第二个问题:单元测试的时候,@Resource注解注入有效,比如在service里面注入dao。到web程序上去跑,就null了,action里面注入的service是null,service里面注入的dao也是null,改成@Autowired就OK了,但是这种现象如何解释呢?而且我不太喜欢用@Autowired,似乎感觉它的效率要差点。

大家知道的给我讲讲吧。

补充一点:MVC框架用的是struts 2.我之前用struts 1 + JPA + spring 2.5时,没有出现@Resource注解注入无效的情况。
看了 http://www.iteye.com/topic/226937 后,第一个问题解决了。
问题补充

在xml中配置1个 spring提供的ibatis模板所需的那个属性,然后写一个dao的超类,用方法注入该属性,这样所有的子类都可以了;

单元测试,你自己想办法获得spring ioc容器不就行了,这可能与测试框架有关


单元测试,我肯定获得spring ioc容器了啊,要不怎么进行IoC啊

3个回答

@Resource和@Qualifier 可以根据name获取Bean;如果不希望使用这种方式,那么就在保证只有一个Bean的情况下直接使用@Autowired;当然@Autowired和@Qualifier也可以一起用。

LZ说一下自己是怎么做UT的吧,是使用如下方式吗?

[code="java"]
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext-test.xml" })
[/code]

在xml中配置1个 spring提供的ibatis模板所需的那个属性,然后写一个dao的超类,用方法注入该属性,这样所有的子类都可以了;

单元测试,你自己想办法获得spring ioc容器不就行了,这可能与测试框架有关

通过注入SqlMapClientTemplate就解决了!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问