1. 程式人生 > >Spring MVC 配置報錯: Error creating bean with name 'userController': Injection of resource dependencies

Spring MVC 配置報錯: Error creating bean with name 'userController': Injection of resource dependencies

今天做了一個簡單的專案,用spring+springMVC實現使用者的CRUD,看似簡單的一個小demo,卻在配置上浪費了不少時間,

首先看一下目錄結構:


專案要求使用jdbcTemplate配置資料來源,下面附上spring的配置檔案和springMVC的配置檔案,分別如下:

applicationContext.xml如下:


spring-MVC.xml配置如下:


web.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">
	<display-name></display-name>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:resources/applicationContext.xml</param-value>
	</context-param>
	<!-- 字元編碼配置 -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<async-supported>true</async-supported>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
        <!-- Spring監聽器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
      <!-- 防止Spring記憶體溢位監聽器 -->
     <listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener>
     <!-- Spring MVC servlet -->
     <servlet>
         <servlet-name>SpringMVC</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
         <init-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:resources/spring-mvc.xml</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
         <async-supported>true</async-supported>
      </servlet>
      <servlet-mapping>
          <servlet-name>SpringMVC</servlet-name>
          <url-pattern>*.action</url-pattern>
       </servlet-mapping>
   <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>
public interface UserDao {

	/**
	 * 查詢所有使用者
	 * @return
	 */
	public List<User> queryAllUsers();
}
package com.qunar.dao.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.stereotype.Repository;

import com.qunar.dao.UserDao;
import com.qunar.model.User;
/**
 * 
 * @author sky
 *
 */
@Repository
public class UserDaoImpl implements UserDao {

	@Resource
	private JdbcTemplate jdbcTemplate;
	
	/**
	 * 查詢所有使用者
	 */
	@Override
	public List<User> queryAllUsers() {
		String sql = "select * from t_user where inUse = false";
		final List<User> list = new ArrayList<User>();
		this.jdbcTemplate.query(sql, new RowCallbackHandler() {
			@Override
			public void processRow(ResultSet rs) throws SQLException {
				User user = new User();
				user.setId(rs.getString("id"));
				user.setName(rs.getString("name"));
				user.setGender(rs.getString("gender"));
				user.setAge(rs.getInt("age"));
				user.setRemarks(rs.getString("remarks"));
				user.setCreate_time(rs.getString("create_time"));
				user.setLast_edit_time(rs.getString("last_edit_time"));
				list.add(user);
			}
		});
		return list;
	}
	
}
public interface UserService {
	/**
	 * 查詢所有使用者
	 * @return
	 */
	public List<User> queryAllUsers();
}
@Service
public class UserServiceImpl implements UserService{

	@Resource
	private UserDao userDao;
	
	@Override
	public List<User> queryAllUsers() {
		return userDao.queryAllUsers();
	}
	
}
@Controller
public class UserController {
	
	@Resource
	private UserService userService;

	
	/**
	 * 初始化使用者列表
	 * @return
	 */
	@RequestMapping("initUserList")
	public ModelAndView initUserList(ModelAndView mv){
		List<User> list = this.userService.queryAllUsers();
		System.out.println(list);
		mv.addObject("list", this.userService.queryAllUsers());
		mv.setViewName("index");
		return mv;
	}
	
}
public class User {
	private String id; 				//編號
	private String name;			//姓名
	private String gender;			//性別
	private Integer age;				//年齡
	private String remarks;			//備註
	private boolean inUse;			//是否可用
	private String create_time;		//建立時間
	private String last_edit_time;	//最後編輯時間

        setter/getter省略
}
此時都配置結束了,開始執行,控制檯報如下錯誤:
警告: Exception encountered during context initialization - cancelling refresh attempt
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.qunar.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)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
	at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663)
	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629)
	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677)
	at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548)
	at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489)
	at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
	at javax.servlet.GenericServlet.init(GenericServlet.java:158)
	at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1236)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1041)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4910)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5192)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3749)
	at org.apache.catalina.startup.HostConfig.reload(HostConfig.java:1365)
	at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1348)
	at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1532)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:280)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1143)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1356)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1360)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1336)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.qunar.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:1301)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:457)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:435)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:559)
	at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:305)
	... 35 more

經過各方掙扎和上網查資料,最後在web.xml的一個地方進行了修改:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">
	<display-name></display-name>
	<!-- Spring監聽器 -->
        【此處做的修改!CSDN字型標紅總是顯示失敗】
 <listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:resources/applicationContext.xml</param-value>
	</context-param>
	<!-- 字元編碼配置 -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<async-supported>true</async-supported>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!-- 防止Spring記憶體溢位監聽器 -->
	<listener>
		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
	</listener>
	<!-- Spring MVC servlet -->
	<servlet>
		<servlet-name>SpringMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:resources/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
		<async-supported>true</async-supported>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringMVC</servlet-name>
		<url-pattern>*.action</url-pattern>
		
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>




最後,tomcat正常啟動!

相關推薦

Spring MVC 配置 Error creating bean with name 'userController': Injection of resource dependencies

今天做了一個簡單的專案,用spring+springMVC實現使用者的CRUD,看似簡單的一個小demo,卻在配置上浪費了不少時間,首先看一下目錄結構:專案要求使用jdbcTemplate配置資料來源,下面附上spring的配置檔案和springMVC的配置檔案,分別如下:a

Error creating bean with name 'userController': Injection of resource dependencies failed;

Springmvc問題 今天,做開發時,剛配置好環境,測試一下環境是否正常,然後日誌報錯是: org.springframework.beans.factory.BeanCreationExcep

解決Error creating bean with name XXX: Injection of resource dependencies failed

解決SSH整合時出現的錯誤,錯誤如上圖所示。 該錯誤是因為Mybatis中需要的註解,spring沒有檢測到此註解資訊。 錯誤原因可能有四處: (1):web.xml沒有配置spring的上下文環境和核心的監聽器 解決辦法: 在web.xml新增 <!--s

Spring Boot Error creating bean with name 'entityManagerFactory' defined in class path resource

fine 依賴 debug isp jpa java idt .com ima spring boot 寫一個web項目,在使用spring-data-jpa的時候,啟動報如下錯誤: Error starting ApplicationContext. To display

啟動tomcat時候,Spring注入beanError creating bean with name

當遇到這種問題的時候,本能的反應就是是不是沒有掃描到該bean物件,該bean物件有沒有加註解。 而網上的普遍解決方案一般都是說spring配置檔案有問題,掃描不到該包;還有一些解決方案比較細節,不具有概括性,比如component元件的類用抽象類(眾所周知,抽象類無法例項

SSM整合Error creating bean with name 'sqlSessionFactory' defined in file...

搭建SSM,遇到錯誤如下: 警告: Exception encountered during context initialization - cancelling refresh attempt org.springframework.beans.factory.Bean

用intellij idea練習spring專案時,aop程式設計Error creating bean with name '(inner bean)#3b0143d3' balbala之類的

程式設計環境,intellij idea 這個錯誤是因為沒有匯入Spring所依賴的AspectJ的jar包引起的,目前用到的,就是aspectjweaver.jar這個包, 最蛋痛的是spring官網下載的lib中並不提供這個依賴包,需要去AspectJ官網下載,連結如

Spring AOPError creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0

問題 在使用junit對spring aop做測試時,報錯如下: [email protected]49438269] java.lang.IllegalStateException: Failed to load ApplicationCon

tomcat啟動時報Error creating bean with name 'transactionManager' defined in class path resource

最近寫了一個專案,部署到服務上的時候遇到一個奇葩的問題,一般本地起專案是用jetty玩的,jetty完全正常當部署到tomcat報錯了,找了2天才解決問題,這兩天tomcat問題就像 滿漢全席一樣不重樣。 報錯原文:Error creating bean with name 'transacti

Error creating bean with name 'menuController': Injection of autowired dependency……

出現了一大串錯誤 Error creating bean with name 'userController': Injection of autowired dependencies failed

maven專案新增Gson的依賴後無法啟動,BeanCreationExceptionError creating bean with name 'gsonBuilder'

具體錯誤如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gsonBuilder' defined in class path

Spring載入Hibernate失敗Error creating bean with name 'sessionFactory' defined in ServletContext... Null

      昨天突然發現Spring載入Hibernate觸發NullPointerException 異常: org.springframework.beans.factory.BeanCreationException: Error creating bean wit

Spring異常Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classe

ssm整合時出現 org.springframework.beans.factory.BeanCreationException Error creating bean with name ‘XXX’ 異常的原因及解決方法

ase wan oca conn sna aspect ava 配置 ng- ssm整合時出現 org.springframework.beans.factory.BeanCreationException :Error creating bean with name ‘X

Spring Cloud Finchley.RELEASE 使用 gateway Error creating bean with name 'webHandler' defined in class

pom <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gatewa

關於Springboot調篇——Error creating bean with name 'sqlSessionFactoryBean--Mapper對映問題

控制檯不停在告警,隨便貼上幾條看看: 2017-06-06 17:46:10.242  WARN 6524 --- [           main] o.s.b.f.s.DefaultListableBeanFactory  

異常 Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFact

今天在學習搭建 SSM 專案時碰到一個異常,異常資訊如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.validati

關於Springboot調篇——Error creating bean with name 'sqlSessionFactoryBean--Mapper對映問題

控制檯不停在告警,隨便貼上幾條看看: 2017-06-06 17:46:10.242  WARN 6524 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exce

spring+springmvc+myibatic中出現了Error creating bean with name 'userService':

我在搭建spring+springmvc+myibatic中出現了 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': I

Spring注入bean Error creating bean with name的網上找不到的解決方案

                        今天在研究Bas