SSM的serviceImpl中调用dao接口的方法报空指针异常,求大神支招 5C

用SSM写的项目,需要实现的功能是从第三方接口获取数据,然后将数据保存到服务器上的数据库,数据获取正常,但是调用dao接口的方法是报空指针异常,请问是什么原因![图片说明](https://img-ask.csdn.net/upload/201709/21/1505956943_524842.jpg)图片说明

10个回答

mapperScanner 下要配置property:sqlSessionFactoryBeanName ,value为你配置的ssf

qq_40056517
qq_40056517 请问你说的是添加这个配置吗?<property name="sqlSessionFactoryBeanName" value="ssf" /> 配置了后依然报错
2 年多之前 回复

是不是空对象的原因,也就是说你在serviceImpl层中的dao没有实例化。
我以前也碰到这种情况,我检查一下你的xml文件,id和class路径都写对了没有。

然后还有一种可能就是你导入的包缺少了,所以不能进行实例化。

weixin_44695125
这个柠檬有丶酸 你好你那个问题怎么解决 能给我说下嘛,我和你的问题一模一样
14 天之前 回复
qq_40056517
qq_40056517 请你帮我看看配置文件,感谢感谢
2 年多之前 回复

应该是dao没有实例化的原因吧,
看报错你报的是OrderServiceImpl.addOrder错误,
应该是OrderServiceImpl中dao 没有实例化的原因

qq_40056517
qq_40056517 回复75闪光雷: 真心感谢你,已经帮助了很多,谢谢你。
2 年多之前 回复
qq_34309305
75闪光雷 没事,那应该是别处的错误了,代码在本地,也不好看,只能靠你自己了。抱歉了,没能帮到你的忙
2 年多之前 回复
qq_40056517
qq_40056517 回复75闪光雷: 加了的,还是报同样的错,真心感谢你的帮助
2 年多之前 回复
qq_34309305
75闪光雷 这个配置也有吗<bean id="orderService" class="com.lemengxiangju.order.service.impl.OrderServiceImpl" autowire="byName"> </bean>
2 年多之前 回复
qq_40056517
qq_40056517 回复75闪光雷: <context:component-scan base-package="com.lemengxiangju.order" />
2 年多之前 回复
qq_34309305
75闪光雷 增加这个配置就是扫描你的包,把所有@Autowired 的dao进行实例化,按道理讲如果这个成功了,你就不会报空指针的错误了
2 年多之前 回复
qq_40056517
qq_40056517 回复75闪光雷: 你好,我添加了这个配置,任然报错,请问还有可能是其他地方的问题吗?分块测试,从获取数据、筛选数据,插入数据到数据库,junit测试都是对的。感谢了
2 年多之前 回复
qq_34309305
75闪光雷 net.baidu.page要换成你的包名
2 年多之前 回复
qq_34309305
75闪光雷 在你的配置文件中加<context:component-scan base-package="net.baidu.page" />
2 年多之前 回复
qq_40056517
qq_40056517 回复75闪光雷: 是的,有这项。
2 年多之前 回复
qq_34309305
75闪光雷 回复qq_40056517: 你的OrderServiceImpl中 有 “@Autowired private orderDAO orderDAO;”吗?
2 年多之前 回复
qq_40056517
qq_40056517 我是使用的注解实例化的,请问是不是@Autowired出问题了
2 年多之前 回复

![图片说明](https://img-ask.csdn.net/upload/201709/21/1505958519_127532.jpg)图片说明

测试是没有问题,但在serviceImpl中调用就出错
图片说明

qq_40056517
qq_40056517 回复弗里德姆: 是的,走三层
2 年多之前 回复
out_of_it_farmer
弗里德姆 回复qq_40056517: 哈哈,我是菜鸟,基本没用过单元测试,感觉应该是注入controller,设置参数,走三层
2 年多之前 回复
qq_40056517
qq_40056517 回复弗里德姆: 请问这样情况我该如何测试?谢谢
2 年多之前 回复
out_of_it_farmer
弗里德姆 是这么测试的吗?
2 年多之前 回复

OrderServiceImpl 这个类看一下加上@Component没有?

qq_40056517
qq_40056517 回复Abean_Y: 你好,我这边贴出来了,请你帮忙看看
2 年多之前 回复
AAAAABBBBBYYYYY
Abean_Y 回复qq_40056517: 你能把 test.interfaceTest.main和OrderServiceImpl贴一下吗?我们看一下怎么注入对象的
2 年多之前 回复
qq_40056517
qq_40056517 你好,加上了的,还是空指针,会不会是其他原因呢?
2 年多之前 回复

OrderServiceImpl 这个类看一下加上@Component 或者 加上 @Service

   阿里云促销

qq_40056517
qq_40056517 你好,加了这个注解的,请问还有可能是其他原因吗
2 年多之前 回复

你贴出来就能看到问题了,你的OrderServiceImpl 是手动new的,别的都是靠spring管理的,所以肯定包空指针啊,你要把OrderServiceImpl也注入

AAAAABBBBBYYYYY
Abean_Y 回复qq_40056517: 正常情况下是在controller层进行注入,同样采用@Autowired ,就跟你的OrderDao注入一样,我看你是写在一个Test中用main函数调用的,你可以尝试下也这么注入下试试。如果不行的话,别这么测试了
2 年多之前 回复
qq_40056517
qq_40056517 请问这个如何注入呢?我是一个新人,这方面还不太熟悉,请你给我讲讲怎么改,十分感谢
2 年多之前 回复
 <aop:config>
        <aop:pointcut expression="execution(* com.dish.serviceImpl.DishServiceImpl..*.*(..))" id="pointcut"/>
        <aop:advisor advice-ref="trAdvice" pointcut-ref="pointcut"/>
    </aop:config>

图片说明图片说明

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