在项目作业中

在项目作业中

http://img1.sycdn.imooc.com//climg/5c1313f900012fb304620382.jpg

http://img1.sycdn.imooc.com//climg/5c1313e60001450212650698.jpg

在site模块无法引入common模块中的serviceImpl,当我引入之后项目就运行不了了,加入@Autowire注解也是同样的情况,那么我应该如何引入serviceImpl(红色框框部分)

正在回答

登陆购买课程后可参与讨论,去登陆

12回答

1、作业不是我批改的,但是老师查看了同学的作业,没有发现同学的报错信息。

但还是有些问题,这里做了一些修改,请同学参考。

1)site 是web模块,应该把pom文件中的<packaging>jar</packaging>改成<packaging>war</packaging>

2)通过纸杯蛋糕老师说的方法,从spring容器中通过ClassPathXmlApplicationContext加载spring.xml 这个配置文件。并从中获取categoryService(注意,强转的时候要用接口,不能用接口的实现类)

3)使用获取的categoryService对象,调用getAll()方法可以查询

4)非常抱歉的是不要使用之前老师告诉你的在init中用new CategoryServiceImpl ()这种方式去获取categoryService

因为这样,new出来的CategoryServiceImpl 没有交给spring管理,它无法调用CategoryDao,要用第二条建议的方法获取。

修改的代码以及运行结果如下(这里为了展示数据,添加了Category的toString方法):

http://img1.sycdn.imooc.com//climg/5c1859dd0001229316540901.jpg

5)按照上边的方式再注入一下DepartmentService等,查出来发送到界面上。

结合老师在作业批改中修改前台页面的方法,把数据放到前台页面上展示即可。

如果还是有问题,可以再次提问。建议同学按照上边同学的方法,把项目从idea中删除,并删除其配置文件,重新导入试试。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

提问者 看到我麻烦叫我去学习 2018-12-16 23:12:46

http://img1.sycdn.imooc.com//climg/5c166b1c00014ec115630990.jpg

有common模块,没有报错,看上去像是没有报错,

我在servlet加了context=.....的代码,提示获取不到。

Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext

  • https://blog.csdn.net/qq_38069453/article/details/78332992 要不然你试试这个方法。你的代码看着没问题呀。
    2018-12-17 09:59:20
好帮手慕珊 2018-12-16 11:38:12

你好!检查一下下面截图中的内容,下面的截图是以员工管理这个案例为例。首先选择File——Project Structure,如下图所示,选择左侧的Modules,看一下在你的sit模块中是否有common模块的内容,是否有报错。(也希望将你的配置截图看看)

http://img1.sycdn.imooc.com//climg/5c15c5b20001cbd816770894.jpg

如果没有,选择右侧的加号,然后选择Module Dependency,把common的Module加进来

http://img1.sycdn.imooc.com//climg/5c15c4b20001e46903620157.jpg

另外,看一下Common模块的pom.xml文件,这个地方的packaging是否是jar包

http://img1.sycdn.imooc.com//climg/5c15c7a500010d5d04600093.jpg

应该和spring模式本身没有关系,如果jar包打包成功了,有可能是没有正确引入。

另外,记得在init()方法中加上如下语句,否则不能获取到bean。

http://img1.sycdn.imooc.com//climg/5c15c801000139ab08490148.jpg

祝学习愉快!



提问者 看到我麻烦叫我去学习 2018-12-14 20:50:10

http://img1.sycdn.imooc.com//climg/5c13a63d0001737705600655.jpghttp://img1.sycdn.imooc.com//climg/5c13a64100014f5405250364.jpg

这里分别是common模块和site模块,

site模块里只有MainServlet,我个人认为,会不会是因为common是spring模式的,而site中并没有告诉spring要调用其中的serviceImpl实现类。所以提示找不到?

(我试过了老师说的install的方法,好像问题不在这)

好帮手慕阿莹 2018-12-14 19:58:31

报错提示是没有找到这个common:jar:1.0-SNAPSHOT这个包

建议同学去本地仓库中,看看是否有common:jar:1.0-SNAPSHOT,如果有,建议删除后,去程序中对common这个模块重新install一下试试。

看看本地仓库中是否有这个common:jar:1.0-SNAPSHOT了。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 我给你讲哈,就算我项目能直接运行,但是我install还是会报错, 所以我觉得可能不是install的问题,而且,只要我在代码中加上 private CategoryService categoryService;就会报错,报错代码是Caused by: java.lang.NoClassDefFoundError: Lcom/service/CategoryService; 提示找不到CategoryService
    2018-12-14 20:44:14
  • 是这个报错:Caused by: java.lang.ClassNotFoundException: com.service.CategoryService
    2018-12-14 20:44:55
  • 老师,我的项目已经上传到作业去了(前几天),是你改吗,问题到现在还是没有解决,如果是你改的,可以看一下吗。。
    2018-12-17 23:36:23
提问者 看到我麻烦叫我去学习 2018-12-14 18:31:37

[ERROR] Failed to execute goal on project site: Could not resolve dependencies for project com.lin:site:jar:1.0-SNAPSHOT: Could not find artifact com.lin:common:jar:1.0-SNAPSHOT

install之后报错。

好帮手慕阿莹 2018-12-14 16:51:53

1、同学是否有在site的模块的pom中引用common模块呢?如果没有,引用一下。

例如老师课程中sm_web中引用了sm_service 

http://img1.sycdn.imooc.com//climg/5c136ef8000104e112400631.jpg

2、如果有,建议同学重新install一下各个模块后再试一下。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

提问者 看到我麻烦叫我去学习 2018-12-14 12:12:32

http://img1.sycdn.imooc.com//climg/5c132d920001365008740570.jpg

是因为我没有在web.xml中配置spring.xml吗

提问者 看到我麻烦叫我去学习 2018-12-14 12:10:12

http://img1.sycdn.imooc.com//climg/5c132ce10001409e10330500.jpg

我改成了这样,它还是报错。

http://img1.sycdn.imooc.com//climg/5c132d090001c97f11980523.jpg

大概意思就是说找不到这个实现类。

好帮手慕阿莹 2018-12-14 12:05:43

初始化的时候要选它的实现类呦,同学想想,其他时候我们用注入的时候,不也是把Service写到实现类上嘛。CategoryService是接口,不能实例化一个接口,可以实例化它的实现类呦


http://img1.sycdn.imooc.com//climg/5c132bed0001a5f106050135.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

提问者 看到我麻烦叫我去学习 2018-12-14 11:49:05

http://img1.sycdn.imooc.com//climg/5c1327f50001e61509430326.jpg

初始化的时候不能是new CategoryService();

是new CategoryService{...}

好帮手慕阿莹 2018-12-14 11:05:49

不能在Servlet中用@Autowire注解,因为Servlet没有交给Spring管理。所以它也没办法用交给Spring管理的类。

同学可以在init方法中初始化一下serviceImpl等。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师