在搭建好SSM项目开发的程序后进行了一些尝试,原来我都使用的配置文件注入service,在spring-service.xml配置文件中已经注入bean,并且运行项目后在浏览器中能正确运行项目。注入bean配置如下:本文地址:http://www.04007.cn/article/900.html,未经许可,不得转载.
<bean id="ArticleServiceImpl" class="cn.api04007.services.ArticleServiceImpl"> <property name="ArticleMapper" ref="articleMapper" /> </bean>本文地址:http://www.04007.cn/article/900.html,未经许可,不得转载.
然后将手动配置注入改成由Spring自动注入,<context:annotation-config/> ,同时在service层进行注解为service,重新运行项目也依然正常。但却发现我原来能正常运行的测试代码不能正常运行,Service代码和测试代码片断如下:本文地址:http://www.04007.cn/article/900.html,未经许可,不得转载.
//Service代码 package cn.api04007.services; import ... @Data @NoArgsConstructor @AllArgsConstructor @Service public class ArticleServiceImpl implements ArticleService { @Autowired private ArticleMapper articleMapper; public List<Article> getArticleList(){ return articleMapper.getArticleList(); } } //测试类代码片断 @Test public void test3(){ ArticleService articleServiceImpl = (ArticleService) context.getBean("ArticleServiceImpl"); List<Article> articleList = articleServiceImpl.getArticleList(); for (Article article : articleList) { System.out.println(article); } }本文地址:http://www.04007.cn/article/900.html,未经许可,不得转载.
报错为:org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'ArticleServiceImpl' available。我有去怀疑代码中间是不是哪个地方不小心改了什么东西,不然为什么突然找不到bean了。毕竟之前代码是正常运行的,然后我进行尝试将手动注入bean和自动注入都启用。遇到另外一个报错:Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'cn.api04007.services.ArticleService' available: expected single matching bean but found 2: articleServiceImpl,ArticleServiceImpl。恍然明白我手动注入时写的 id 首字母是大写的,而自动注入的bean首字母成了小写,导致我只采用自动注入的时候找不到bean。所以只需要把测试类中betBean中的类首字母大写改成小写即可。同时为了规范,使用bean配置注入时应该都首字母小写。本文地址:http://www.04007.cn/article/900.html,未经许可,不得转载.
但我也有点不好的感受!你说spring啊Spring,我要取ArticleServiceImpl这个类,容器里明明有articleServiceImpl,你说你找不到;但容器里即有ArticleServiceImpl又有articleServiceImpl时,你又说你能找到两个。那你这之前不是已经找到了吗!你说找不到不是耍我啊,好吧。也许下一个版本你就更厉害了。本文地址:http://www.04007.cn/article/900.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/900.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |