<legend id='55WVD'><style id='55WVD'><dir id='55WVD'><q id='55WVD'></q></dir></style></legend>
      <bdo id='55WVD'></bdo><ul id='55WVD'></ul>

    <tfoot id='55WVD'></tfoot>

      <i id='55WVD'><tr id='55WVD'><dt id='55WVD'><q id='55WVD'><span id='55WVD'><b id='55WVD'><form id='55WVD'><ins id='55WVD'></ins><ul id='55WVD'></ul><sub id='55WVD'></sub></form><legend id='55WVD'></legend><bdo id='55WVD'><pre id='55WVD'><center id='55WVD'></center></pre></bdo></b><th id='55WVD'></th></span></q></dt></tr></i><div id='55WVD'><tfoot id='55WVD'></tfoot><dl id='55WVD'><fieldset id='55WVD'></fieldset></dl></div>

      <small id='55WVD'></small><noframes id='55WVD'>

        BeanNotOfRequiredTypeException 由于自动装配字段

        时间:2023-07-26
      1. <i id='A1D3v'><tr id='A1D3v'><dt id='A1D3v'><q id='A1D3v'><span id='A1D3v'><b id='A1D3v'><form id='A1D3v'><ins id='A1D3v'></ins><ul id='A1D3v'></ul><sub id='A1D3v'></sub></form><legend id='A1D3v'></legend><bdo id='A1D3v'><pre id='A1D3v'><center id='A1D3v'></center></pre></bdo></b><th id='A1D3v'></th></span></q></dt></tr></i><div id='A1D3v'><tfoot id='A1D3v'></tfoot><dl id='A1D3v'><fieldset id='A1D3v'></fieldset></dl></div>

        <small id='A1D3v'></small><noframes id='A1D3v'>

          <tbody id='A1D3v'></tbody>

          <bdo id='A1D3v'></bdo><ul id='A1D3v'></ul>
        • <legend id='A1D3v'><style id='A1D3v'><dir id='A1D3v'><q id='A1D3v'></q></dir></style></legend>

          <tfoot id='A1D3v'></tfoot>

                • 本文介绍了BeanNotOfRequiredTypeException 由于自动装配字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我还是 Spring MVC 的新手,在构建我的测试项目时,我从 Tomcat 日志中收到了这条消息:

                  I'm still new to Spring MVC and while building my test project, I got this message from Tomcat logs:

                  SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
                  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'divisionController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'adminService' must be of type [employee.service.impl.AdminServiceImpl], but was actually of type [$Proxy52]
                      at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:307)
                      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
                      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
                      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
                      at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
                      ...
                  Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'adminService' must be of type [employee.service.impl.AdminServiceImpl], but was actually of type [$Proxy52]
                      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:360)
                      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
                  

                  我有两个面向用户和管理员的滚动服务,并带有接口:

                  I have two rolle services for user and admin with there interfaces:

                  package employee.service;
                  
                  import employee.model.EmployeeDiv;
                  import employee.model.EmployeeInfo;
                  import employee.model.UserInfo;
                  
                  import java.util.List;
                  
                  /**
                   *
                   * @author serge
                   */
                  
                  public interface AdminService extends UserService {
                  
                       //  !!!! for register & udate of Employee use String type birthday !!!!
                  
                      /*
                       * Employee
                       */
                      public EmployeeInfo registerEmployee(EmployeeInfo employeeInfo);
                  
                      public EmployeeInfo updateEmployee(EmployeeInfo employeeInfo);
                  
                      public EmployeeInfo findEmployeeByID(Integer id);   
                  
                      /*
                       * Division
                       */
                      public EmployeeDiv registerDivision(EmployeeDiv division);
                  
                      public EmployeeDiv updateDivision(EmployeeDiv division);
                  
                      public List<EmployeeDiv> findAllDivisions();
                  
                      public List<EmployeeDiv> findDivisionsByName(EmployeeDiv division);
                  
                      public EmployeeDiv findDivisionsById(Integer id);
                  
                      /*
                       * Login
                       */
                      public UserInfo registerUser(UserInfo user);
                  
                      public UserInfo updateUser(UserInfo user);
                  
                      public List<UserInfo> findAllUsesrs();
                  
                      public List<UserInfo> findUsesrByLogin(UserInfo user);
                  
                      public UserInfo findUsesrById(Integer id);
                  }
                  

                  这是 AdminServiceImpl:

                  This is AdminServiceImpl:

                  package employee.service.impl;
                  
                  import employee.DAO.EmployeeDivDAO;
                  import employee.DAO.EmployeeInfoDAO;
                  import employee.DAO.UserDAO;
                  import employee.model.EmployeeDiv;
                  import employee.model.EmployeeInfo;
                  import employee.model.UserInfo;
                  import employee.service.AdminService;
                  import employee.validation.ParsingDate;
                  import org.apache.log4j.Logger;
                  import org.springframework.beans.factory.annotation.Autowired;
                  import org.springframework.security.access.annotation.Secured;
                  import org.springframework.stereotype.Service;
                  import org.springframework.transaction.annotation.Transactional;
                  
                  import java.util.List;
                  
                  /**
                   * @author serge
                   *
                   * Admin level
                   *
                   * Service for processing employee, divisions, userslogin
                   */
                  
                  //@Repository("adminService")
                  @Service("adminService")
                  @Transactional
                  public class AdminServiceImpl extends UserServiceImpl implements AdminService {
                  
                      protected static Logger adminLogger = Logger.getLogger("service");
                      private EmployeeDivDAO emplDivDAO;
                      private UserDAO userDAO;
                      private EmployeeInfoDAO emplInfoDAO;
                  
                      @Autowired
                      @Override
                      public void setEmployeeDao(EmployeeInfoDAO emplInfoDAO) {
                          this.emplInfoDAO = emplInfoDAO;
                      }
                  
                      @Autowired
                      public void setEmployeeDao(EmployeeDivDAO emplDivDAO) {
                          this.emplDivDAO = emplDivDAO;
                      }
                  
                      @Autowired
                      public void setUserDao(UserDAO userDAO) {
                          this.userDAO = userDAO;
                      }
                  
                      public AdminServiceImpl() {
                  
                          initTestEmployee();
                      }
                  
                      /**
                       * Initialize EmployeeInfo test
                       */
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      private EmployeeInfo initTestEmployee() {
                  
                          adminLogger.debug("saving testEmployee");
                  
                          EmployeeInfo employeeInfo = new EmployeeInfo();
                          ParsingDate date = new ParsingDate();
                          employeeInfo.setFirstName("Petr");
                          employeeInfo.setLastName("Ivanenko");
                          employeeInfo.setEmpDiv("second");
                          employeeInfo.setBirthdate(date.parseDate("1981-10-03"));
                          employeeInfo.setSalary(3500);
                          employeeInfo.setActive(true);
                  
                          return employeeInfo;
                      }
                  
                      /**
                       * registrating new Employee Information
                       *
                       * @return EmployeeInfo object
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public EmployeeInfo registerEmployee(EmployeeInfo employeeInfo) {
                  
                          adminLogger.debug("registrating new Employee");
                  
                          try {
                  
                              emplInfoDAO.save(employeeInfo);
                  
                          } catch (NullPointerException e) {
                          }
                          return employeeInfo;
                      }
                  
                      /**
                       * updating Employee Information
                       *
                       * @return EmployeeInfo object
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public EmployeeInfo updateEmployee(EmployeeInfo employeeInfo) {
                  
                          adminLogger.debug("updating Employee with id: " + employeeInfo.getId());
                          try {
                  
                              emplInfoDAO.update(employeeInfo);
                  
                          } catch (NullPointerException e) {
                          }
                          return employeeInfo;
                      }
                  
                      /**
                       * Retrieving Employee Information by id 
                       *
                       * @return EmployeeInfo object
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public EmployeeInfo findEmployeeByID(Integer id) {
                  
                          adminLogger.debug("Retrieving Employee with id= " + id);
                          EmployeeInfo employeeInfo = new EmployeeInfo();
                          employeeInfo.setId(id);
                          emplInfoDAO.find(employeeInfo);
                          return employeeInfo;
                      }
                  
                      /**
                       * registrating new Employee Division
                       *
                       * @return EmployeeDiv object
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public EmployeeDiv registerDivision(EmployeeDiv division) {
                  
                          adminLogger.debug("registrating new Division");
                          try {
                  
                              emplDivDAO.save(division);
                  
                          } catch (NullPointerException e) {
                          }
                          return division;
                      }
                  
                      /**
                       * updating Employee Division
                       *
                       * @return EmployeeDiv object
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public EmployeeDiv updateDivision(EmployeeDiv division) {
                  
                          adminLogger.debug("updating Division with id: " + division.getId());
                          try {
                  
                              emplDivDAO.update(division);
                  
                          } catch (NullPointerException e) {
                          }
                          return division;
                      }
                  
                      /**
                       * Retrieving all Employee Divisions
                       *
                       * @return List of EmployeeDiv objects
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public List<EmployeeDiv> findAllDivisions() {
                  
                          adminLogger.debug("Retrieving all divisions");
                          return emplDivDAO.findAll();
                      }
                  
                      /**
                       * Retrieving all Employee Divisions by name
                       *
                       * @return List of EmployeeDiv objects
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public List<EmployeeDiv> findDivisionsByName(EmployeeDiv division) {
                          String empDiv = "empDiv";
                  
                          adminLogger.debug("Retrieving Divisions by name: " + division.getEmpDiv());
                          return emplDivDAO.findAllByParam(empDiv, division.getEmpDiv());
                      }
                  
                       /**
                       * Retrieving Employee Divisions by id 
                       *
                       * @return EmployeeDiv object
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public EmployeeDiv findDivisionsById(Integer id) {
                  
                          adminLogger.debug("Retrieving Division with id= " + id);
                          EmployeeDiv employeeDiv = new EmployeeDiv();
                          employeeDiv.setId(id);
                          emplInfoDAO.find(employeeDiv);
                          return employeeDiv;
                      }
                  
                      /**
                       * registrating new User Information
                       *
                       * @return UserInfo object
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public UserInfo registerUser(UserInfo user) {
                  
                          adminLogger.debug("registrating new User");
                          try {
                  
                              userDAO.save(user);
                  
                          } catch (NullPointerException e) {
                          }
                          return user;
                      }
                  
                      /**
                       * updating new User Information
                       *
                       * @return UserInfo object
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public UserInfo updateUser(UserInfo user) {
                  
                          adminLogger.debug("updating User with id: " + user.getId());
                          try {
                  
                              userDAO.update(user);
                  
                          } catch (NullPointerException e) {
                          }
                          return user;
                      }
                  
                      /**
                       * retriviting all Users 
                       *
                       * @return List of UserInfo objects
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public List<UserInfo> findAllUsesrs() {
                  
                          adminLogger.debug("Retrieving all Users");
                          return userDAO.findAll();
                      }
                  
                      /**
                       * retriving all Users by login
                       *
                       * @return List of UserInfo objects
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public List<UserInfo> findUsesrByLogin(UserInfo user) {
                          String login = "login";
                  
                          adminLogger.debug("Retrieving User with login: " + login);
                          return userDAO.findAllByParam(login, user.getLogin());
                      }
                  
                      /**
                       * Retrieving Employee Divisions by id 
                       *
                       * @return EmployeeDiv object
                       */
                      @Override
                      @Transactional
                      @Secured("ROLE_ADMIN")
                      public UserInfo findUsesrById(Integer id) {
                  
                          adminLogger.debug("Retrieving Division with id= " + id);
                          UserInfo userInfo = new UserInfo();
                          userInfo.setId(id);
                          emplInfoDAO.find(userInfo);
                          return userInfo;
                      }
                  }
                  

                  这是 applicationContext.xml

                  This is applicationContext.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:mvc="http://www.springframework.org/schema/mvc"
                         xsi:schemaLocation="http://www.springframework.org/schema/beans 
                              http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                              http://www.springframework.org/schema/context
                              http://www.springframework.org/schema/context/spring-context-3.1.xsd
                              http://www.springframework.org/schema/mvc 
                              http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
                  
                      <!-- Activates annotations -->
                  
                      <context:annotation-config />
                  
                      <!-- Scans for annotated components in base-package-->
                  
                      <context:component-scan base-package="employee" />
                  
                      <bean class="employee.service.impl.AdminServiceImpl"/>
                      <bean class="employee.service.impl.UserServiceImpl"/>
                      <!--bean class="employee.DAO.impl.EmployeeInfoDAOImpl"/>
                      <bean class="employee.DAO.impl.EmployeeDivDAOImpl"/>
                      <bean class="employee.DAO.impl.UserDAOImpl"/-->
                  
                      <!-- for Spring Jackson JSON support  -->
                  
                      <mvc:annotation-driven/>
                  
                      <!-- Shared Hibernate SessionFactory in a Spring application context. -->
                  
                      <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
                          <property name="dataSource" ref="dataSource"></property>
                  
                          <!--property name="dataSource">
                              <ref bean="dataSource"/>
                          </property-->
                  
                          <property name="annotatedClasses">
                              <list>
                                  <value>employee.model.UserInfo</value>
                                  <value>employee.model.EmployeeInfo</value>
                                  <value>employee.model.EmployeeDiv</value>
                              </list>
                          </property>
                  
                          <property name="hibernateProperties">
                              <props>
                                  <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                                  <prop key="hibernate.show_sql">true</prop>
                                  <prop key="hibernate.hbm2ddl.auto">update</prop>
                              </props>
                          </property>
                      </bean>
                  
                      <!-- for database, imports the properties from database.properties -->
                  
                      <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                          <property name="driverClassName" value="${jdbc.driverClassName}" />
                          <property name="url" value="${jdbc.url}" />
                          <property name="username" value="${jdbc.username}" />
                          <property name="password" value="${jdbc.password}" />
                      </bean>
                  
                      <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                          <property name="location" value="classpath:database.properties"/>
                      </bean>
                  </beans>
                  

                  请告诉我这个bean名称有什么问题,我知道是AOP问题:

                  Bean named 'adminService' must be of type [employee.service.impl.AdminServiceImpl], but was actually of type [$Proxy52]
                  

                  我该如何解决?

                  我在控制器中使用 AdminServiceImpl:

                  I use AdminServiceImpl in Controllers:

                  package employee.controller;
                  
                  import employee.model.EmployeeDiv;
                  import employee.service.impl.AdminServiceImpl;
                  import org.apache.log4j.Logger;
                  import org.springframework.stereotype.Controller;
                  import org.springframework.ui.Model;
                  import org.springframework.web.bind.annotation.ModelAttribute;
                  import org.springframework.web.bind.annotation.PathVariable;
                  import org.springframework.web.bind.annotation.RequestMapping;
                  import org.springframework.web.bind.annotation.RequestMethod;
                  
                  import javax.annotation.Resource;
                  
                  /**
                   * @author serge
                   *
                   * Handles and retrieves division related requests
                   */
                  @Controller
                  @RequestMapping("/division")
                  public class DivisionController {
                  
                      protected static Logger logger = Logger.getLogger("controller");
                      @Resource(name = "adminService")
                      private AdminServiceImpl adminService;
                  
                      /**
                       * Handles and retrieves a /WEB-INF/jsp/divisionpage.jsp
                       *
                       * containing all division
                       *
                       * @return the name of the JSP page
                       */
                      @RequestMapping(method = RequestMethod.GET)
                      public String getAllPage(Model model) {
                          logger.debug("Received request to show all division page");
                  
                          // Retrieve all division and attach to model 
                          model.addAttribute("division", adminService.findAllDivisions());
                          return "divisionpage";
                      } ....
                  

                  推荐答案

                  在你的代码中你必须像这样自动装配 AdminServiceImpl:

                  Somewhere in your code you must be autowiring AdminServiceImpl like this:

                  @Autowired
                  private AdminServiceImpl adminService;
                  

                  要么几乎不依赖于接口:

                  Either depend barely on interface:

                  @Autowired
                  private AdminService adminService;
                  

                  或启用 CGLIB 代理.

                  or enabled CGLIB proxies.

                  • Autowired spring bean 不是代理
                  • 在非单例 bean 上的 Spring 代理上修复 BeanNotOfRequiredTypeException?
                  • 获取 Spring 错误名为 'x' 的 Bean 必须是 [y] 类型,但实际上是 [$Proxy] 类型"在詹金斯
                  • Spring AOP介绍中丢失原始界面

                  这篇关于BeanNotOfRequiredTypeException 由于自动装配字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:PostgreSQL 枚举和 Java 枚举之间的休眠映射 下一篇:在 Android Studio 2.2 中启用注释处理器选项

                  相关文章

                  最新文章

                  <i id='iNBz5'><tr id='iNBz5'><dt id='iNBz5'><q id='iNBz5'><span id='iNBz5'><b id='iNBz5'><form id='iNBz5'><ins id='iNBz5'></ins><ul id='iNBz5'></ul><sub id='iNBz5'></sub></form><legend id='iNBz5'></legend><bdo id='iNBz5'><pre id='iNBz5'><center id='iNBz5'></center></pre></bdo></b><th id='iNBz5'></th></span></q></dt></tr></i><div id='iNBz5'><tfoot id='iNBz5'></tfoot><dl id='iNBz5'><fieldset id='iNBz5'></fieldset></dl></div>
                  • <bdo id='iNBz5'></bdo><ul id='iNBz5'></ul>

                      <small id='iNBz5'></small><noframes id='iNBz5'>

                      <legend id='iNBz5'><style id='iNBz5'><dir id='iNBz5'><q id='iNBz5'></q></dir></style></legend>
                    1. <tfoot id='iNBz5'></tfoot>