IDEA无法在service层用注解方式注入mapper

甜酒慢品 发布于 2015/05/13 11:46
阅读 26K+
收藏 0

IDEA版本是14.1.2 mybatis插件版本是2.3.4

现在项目集成了mybatis,在业务类service层中用@service  @Autowired 把mapper注入,实际运行时执行到该service报错,报mapper没有注入。(如果去掉@service和@Autowired  用传统的xml申明service并写入mapper属性不报错)

同样一份代码在eclipse上跑是没问题的,猜测是跟IDEA得编译有关,不知道哪位大神可以帮忙解惑,谢谢


这是在IDEA 14中的


在eclipse中就正常显示了

加载中
0
范老司
范老司
  IDEA14.1.2虽然是14的升级版,但也不可能会出现以上问题,你看提示很明显,你有导包莫?
范老司
范老司
回复 @甜酒慢品 : 加油,风雨中,我们都是一线的战士,哈哈!
甜酒慢品
甜酒慢品
回复 @fajar : 这个还得研究一下,现在的mapper都没有@Repository这个注解,加上之后不报错,但是页面使用的时候还是不行,eclipse就没有这个问题,我不会放弃的啦,正好给自己一些课题研究研究
范老司
范老司
回复 @甜酒慢品 : 那你使用基于注解的驱动,有手动加bean或者使用basicpackage-scan的策略嘛?IDEA是最好的Java集成环境,不要放弃它,因为高--大--上,哈哈!
甜酒慢品
甜酒慢品
妥妥导啦~同一份代码用eclipse启的正常运行啊
0
雨翔河
雨翔河
eclipse大法好
甜酒慢品
甜酒慢品
用了3年的IDEA 不想就这么扔了
0
huyong5802
huyong5802

我的idea版本是14.1.1,集成mybatis的时候挺好的啊,你是不是哪个地方写的有问题?看报错好像是bean的配置出问题了。

甜酒慢品
甜酒慢品
回复 @huyong5802 : 这个有写噢 只是排除掉了controller
huyong5802
huyong5802
@甜酒慢品 你用了@service , 就用spring去扫描目录, 这个所有用了这个annotation就会自动创建bean。把这个加到spring配置里:<context:component-scan base-package="your.service.dir"/>
甜酒慢品
甜酒慢品
还真是。。我这个service也是用@service注解申明的 xml文件里没做申明 是不是指这个service没有被spring管理起来?
0
l
lameboy
在mapper接口上加上@Component就可以了,但是这样做对不对就不知道了,在我这里运行是正常的。
0
无聊书生
我这也出现这个问题,我把提示有红色改成黄色....
0
Ambitor
Ambitor

我觉得应该不会有此bug,eclipse没有报错是因为eclipse的安全监测机制没有IDEA好,这也是为什么现在越来越多的开发抛弃eclipse选择IDEA的原因。我也是用的Mybatis+spring ,IDEA14.1.3  ,请问你是不是少配置了DAO层的包扫描?

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

....配置mapper接口的包路径

</bean>

xiekongye
xiekongye
正解,配置了就好了
0
SmartZP
SmartZP
你的问题,最好把代码完整发布到Github上面,给出地址。这样大家可以直接看代码进行调试。不然问题出错的环节实在太多了。
0
hv0912
hv0912

今天我也遇到你的问题了,我发现在Mapper接口文件中,加上

@Repository public interface UserMapper {
注解就好啦
hsl727261250
hsl727261250
帮了我大忙了!!!谢谢. 这个和上面回答"对接口添加@Component注解"的答案都能解决, 但是这个@Repository注解更明确.
0
fhr91
fhr91
删除他即可,其实不一定要配置进来
lurenjiazhw
lurenjiazhw
为什么可以不配置了?我也发现不配置也可以,但是好奇怪啊,那个类不交给spring,它怎么new出来的
返回顶部
顶部