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)
我为用户和管理员提供了两个rolle服务,具有这些接口:
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:
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
<?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 named 'adminService' must be of type [employee.service.impl.AdminServiceImpl], but was actually of type [$Proxy52]
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";
} ....
@Autowired
private AdminServiceImpl adminService;
@Autowired
private AdminService adminService;
问题内容: 我还是Spring MVC的新手,在构建测试项目时,我从Tomcat日志中得到了以下消息: 我有两个接口,分别用于用户和管理员: 这是AdminServiceImpl: 这是applicationContext.xml 请告诉我这个bean名称是什么问题,我知道这是AOP问题: 我该如何解决? 我在控制器中使用AdminServiceImpl: 问题答案: 您必须在代码中的某处像这样自
我正在努力学习一本书名为《SpringMVC初学者指南》的书,我一直在努力创建存储库对象。我不断地得到一个BeanCreationException。不知道我还错过了什么。我想知道是否有人能帮我解决这个问题。 请在下面找到我的代码。谢谢 BeanCreationException XML文件: ProductCrontroller: 产品存储库: InMemoryProductRepository
我想知道是否有办法模拟正在自动连线的场。 考虑下面的情况。 我有一个班级名A 另一个B类看起来像这样 现在我想为这个方法编写junit。 我知道有一种方法可以像这样模拟自动连线场。 但我的问题是- eg 请提出建议,否则就没有办法了???? 我不想改变私人生活。我也不想添加getter和setter或reflection。我只是想知道,在创建一个类的新对象之后,有没有办法模拟B实例。
我在Spring+SpringMVC+Hibernate+MySQL web应用程序中的Spring配置有一个问题。Spring无法创建我在Service类中宣布的bean。 下面是Controller类 应用程序-上下文 最后是我的StackTrace 原因:org.SpringFramework.Beans.Factory.BeanCreationException:无法自动连接字段:priv
被异常卡住,下面是日志: org.springframework.beans.factory.BeanCreation异常:创建名为扬声器的bean时出错:注入自动生成的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreation异常:无法自动连接方法:公共最终无效org.mybatis.spring.support.SqlSessionDao
问题内容: 能否请您告诉我,我如何才能很好地为Hibernate实体启用Spring自动装配? 假设我有一个实体,并希望在那里有邮件发送者: 有没有比做的更好的方法 在我的DAO中? 谢谢! 问题答案: 有可能的!(这是Spring Roo中的默认样式!) 您所需要做的就是将@Configurable批注添加到您的实体。在配置中并使用AspectJ编织激活注释。 Spring参考中有一章:7.8.