自己搭建了一个SpringMVC+Spring+Maven的项目项目在使用注解依赖注入时报错,org.springframework.beans.factory

destroy89 2018-04-10 05:23:00
自己搭建了一个SpringMVC+Spring+Maven的项目项目在使用注解依赖注入时报错,org.springframework.beans.factory.BeanCreationException。第一次搞不会贴图,只有贴代码了org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.core.service.UserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:308) ~[spring-context-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) ~[spring-context-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) ~[spring-context-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at javax.servlet.GenericServlet.init(GenericServlet.java:158) [servlet-api.jar:4.0.FR]
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1124) [catalina.jar:9.0.6]
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1079) [catalina.jar:9.0.6]
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:761) [catalina.jar:9.0.6]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133) [catalina.jar:9.0.6]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.6]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494) [catalina.jar:9.0.6]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) [catalina.jar:9.0.6]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.6]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651) [catalina.jar:9.0.6]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:9.0.6]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.6]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:407) [tomcat-coyote.jar:9.0.6]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.6]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754) [tomcat-coyote.jar:9.0.6]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376) [tomcat-coyote.jar:9.0.6]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.6]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_73]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_73]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.6]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_73]
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.core.service.UserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1308) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:949) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:457) ~[spring-context-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:435) ~[spring-context-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:559) ~[spring-context-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:305) ~[spring-context-4.1.4.RELEASE.jar:4.1.4.RELEASE]
... 37 common frames omitted
之前搜索过类似的帖子,但是没解决自己的问题,检查自己的springmvc配置没什么问题,希望大神可以帮忙
...全文
2433 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41984812 2018-04-11
  • 打赏
  • 举报
回复
非常好的学习资料!
destroy89 2018-04-10
  • 打赏
  • 举报
回复
谢谢Info_Qi ,是这个原因,问题已经解决
Info_Qi 2018-04-10
  • 打赏
  • 举报
回复
xml配置中要配置扫描serice包的注解,只配置扫描controlle包,service没有被Spring注册,所以会找不到而报错
李承一 2018-04-10
  • 打赏
  • 举报
回复
一个完整的javabean应该有get和set方法
destroy89 2018-04-10
  • 打赏
  • 举报
回复
在控制层调用时也使用@Resource注入声明过了呀
destroy89 2018-04-10
  • 打赏
  • 举报
回复
不是使用@Service注解声明过了吗?
迷途的码农 2018-04-10
  • 打赏
  • 举报
回复
给spring注入调用啊
destroy89 2018-04-10
  • 打赏
  • 举报
回复
写set方法的目的是什么,不太明白,
迷途的码农 2018-04-10
  • 打赏
  • 举报
回复
写个set方法应该就不会报错了
迷途的码农 2018-04-10
  • 打赏
  • 举报
回复
UserController 里面UserService 要set方法
destroy89 2018-04-10
  • 打赏
  • 举报
回复
spring mvc.xml 的注解扫描路径也有。 <!-- 只扫描Controller 注解 --> <context:component-scan base-package="com.core.controller,com.core.service" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/> </context:component-scan>
destroy89 2018-04-10
  • 打赏
  • 举报
回复
UserService也使用@Service注解过了。代码如下//Powered By if, Since 2014 - 2020 package com.core.service; import com.core.inteface.UserMapper; import com.core.object.User; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import com.core.common.base.ServiceMybatis; import com.core.common.utils.PasswordEncoder; import javax.annotation.Resource; //import com.core.sys.mapper.TRoleMapper; /** * @Author:chenbo * @Description:用户服务类 * @Date:下午4:40 2018/4/10 * @param: */ @SuppressWarnings("rawtypes") @Service public class UserService extends ServiceMybatis<User> { @Resource private UserMapper userMapper; /*@Resource private TRoleMapper roleMapper;*/ /*@Resource private SysUserRoleMapper sysUserRoleMapper;*/ /*** * @Title: checkSysUser * @Description: 登录验证用户名和密码 * @author yql * @param: @param userName * @param: @param password * @return: SysUser */ public User checkSysUser(String userName, String password) { User sysUser = new User(); /* 密码加密 */ if (!StringUtils.isEmpty(userName) && !StringUtils.isEmpty(password)) { String encryptPwd = PasswordEncoder.encrypt(password, null); sysUser.setUsername(userName); sysUser.setPassword(encryptPwd); sysUser = userMapper.selectOne(sysUser); return sysUser; } return null; } // }
destroy89 2018-04-10
  • 打赏
  • 举报
回复
有注入。在一开始就注入了,代码如下package com.core.controller; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import com.core.object.User; import com.core.service.UserService; import com.core.tool.SysUserUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.core.common.base.BaseController; import com.core.common.constant.Constant; import com.core.common.utils.ResultUtil; /*** * * @Description: 用户管理 * * */ @SuppressWarnings("rawtypes") @Controller @RequestMapping(value = "/sys/user") public class UserController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Resource private UserService userService; @RequestMapping(value = "login", method = RequestMethod.POST) // public @ResponseBody ModelAndView login(HttpServletRequest request, Model model) { public String login(HttpServletRequest request, Model model) { HttpSession session = request.getSession(); String userName = request.getParameter("userName"); String password = request.getParameter("userpwd"); Map resultMap = null; try { User user = userService.checkSysUser(userName, password); if(null != user){ /* 登录成功,更新最后登录时间、登录ip*/ User user1 = new User(); user1.setIduser(user.getIduser()); session.setAttribute(Constant.SESSION_LOGIN_USER, user); //缓存用户到session中 SysUserUtils.cacheLoginUser(user); resultMap = ResultUtil.getSuccessResultMap(null); return "background/index"; } } catch (Exception e) { logger.error("登录失败:" + e); } model.addAttribute("msg", "用户名或密码错误"); return "index"; } }
迷途的码农 2018-04-10
  • 打赏
  • 举报
回复
把你UserController代码贴出来,好像那里没有注入UserService
destroy89 2018-04-10
  • 打赏
  • 举报
回复
在线等。
destroy89 2018-04-10
  • 打赏
  • 举报
回复
补充问题,开发工具是Intelij IDea + Tomcat。jdk版本1.8、tomcat版本9.0,程序环境是基于Unix系统开发,所有的工具都是mac版。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧