2017-08-03 365 views
2

我是Spring MVC的新手。我正面临着UnsatisfiedDependencyException。我添加了stereotype annotations,但仍面临同样的问题。UnsatisfiedDependencyException:创建名为'userController'的bean时出错:不满意的依赖项

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [com.demo.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} looking positive replay.

UserController中:

@CrossOrigin 
@RestController 
public class UserController { 

@Autowired(required=true) 
private UserService userService; 

@RequestMapping(value = { "/userSave" },consumes = {"multipart/form-data"}, method = RequestMethod.POST) 
@ResponseBody 
public String saveUserDetails(@RequestPart(value="file",required=false) MultipartFile file, 
     @RequestPart("user")User user, 
     HttpSession session, HttpServletRequest request, 
     HttpServletResponse response){ 
     System.out.println("data reached...!"); 
     String result=userService.saveUserData(user,session); 
     return result; 

} 

}

UserService:

public interface UserService { 
    public String saveUserData(User user,HttpSession session); 
} 

UserServiceImpl:

@Service("userService") 
public class UserServiceImpl implements UserService{ 

@Autowired 
UserRepository userRepository; 

public String saveUserData(User user,HttpSession session){ 
    String output; 
    Date regDate=new Date(); 
    user.setRegDate(regDate); 
    output= userRepository.saveUserData(user); 
    return output; 
} 

}

UserRepository:

@Component 
@Transactional 
public class UserRepository extends BaseRepository{ 

@Autowired 
protected SessionFactory sessionFactory; 


public String saveUserData(User user) { 

    final Session session = (Session) getSessionFactory(); 
    try { 
     session.beginTransaction(); 
     Query query=session.createQuery("UPDATE User set user_Name =:userName," 
       + "reg_Date =:regDate,img_Id=:imgId"); 
     query.setParameter("userName", user.getUserName()); 
     query.setParameter("regDate", user.getRegDate()); 
     query.setParameter("imgId", user.getImgId()); 
     query.setParameter("emailId", user.getImgId()); 
     session.save(user); 
     session.getTransaction().commit(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

}

spring.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.0.xsd 
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd 
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd 
        "> 

    <context:annotation-config /> 

    <context:component-scan base-package="com.demo.app" /> 
    <mvc:default-servlet-handler /> 

    <mvc:annotation-driven> 
     <mvc:message-converters register-defaults="true"> 
      <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
       <property name="supportedMediaTypes" value="text/plain;charset=UTF-8" /> 
      </bean> 
     </mvc:message-converters> 
    </mvc:annotation-driven> 

    <bean id="jspViewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass" 
      value="org.springframework.web.servlet.view.JstlView" /> 
     <property name="prefix" value="/WEB-INF/html/" /> 
     <property name="suffix" value="html" /> 
    </bean> 

    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/UserDB" /> 
     <property name="username" value="root" /> 
     <property name="password" value="password" /> 
    </bean> 

    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>com.demo.app.model.User</value> 

      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.hbm2ddl.auto">update</prop> 
      </props> 
     </property> 
    </bean> 

    <tx:annotation-driven transaction-manager="transactionManager" /> 
    <bean id="transactionManager" 
     class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 
    <bean 
     class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 
     <property name="exceptionMappings"> 
      <props> 
       <prop key="java.lang.Exception">Error</prop> 
      </props> 
     </property> 
    </bean> 
    <bean id="multipartResolver" 
     class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
     <property name="maxUploadSize" value="2097152" /> 
    </bean> 
</beans> 

错误:

SEVERE: Context initialization failed 
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [com.demo.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) 

请帮助我,

谢谢

+0

你的组件扫描看起来像什么,你的包声明是什么? – Jens

+0

@Jens感谢您的重播。我可以张贴我的春天吗?xml文件 – umapathi

+0

显示你的控制器代码注入服务的地方 –

回答

1

最后我解决.spring依赖jar文件版本不匹配。所有的春天依赖版本都是一样的。

 <dependencies> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId> 
    <version>4.2.3.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-config</artifactId> 
    <version>4.2.3.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-aop</artifactId> 
    <version>4.2.3.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-config</artifactId> 
    <version>4.2.3.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-tx</artifactId> 
    <version>4.2.3.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-jdbc</artifactId> 
    <version>4.2.3.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-orm</artifactId> 
    <version>4.2.3.RELEASE</version> 
</dependency> 
    </dependencies> 
3

@Service("userService")应该接近实现不是接口。在服务实现

+0

我检查这一个也不工作 – umapathi

+0

然后这意味着春天不创建这个bean,可能的原因是你的服务不在组件扫描包 –

+0

检查一次我添加组件扫描也 – umapathi

1

@Service注释使用,而不能在接口因为接口只映射控制器实际的服务实现,只等逻辑...

0

“未找到相关性[com.demo.app预选赛豆。 service.UserService]:预计至少有1个bean有资格作为autowire候选人。“

以上错误表示UserService bean未创建。 您可以请检查您是否在此处提供了正确的基础包。

你也可以请将注释更改为[email protected]到@Repository。

相关问题