[英]ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error
[RMI TCP Connection(7)-127.0.0.1] ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of autowired dependencies failed;
[RMI TCP Connection(7)-127.0.0.1]错误org.springframework.web.servlet.DispatcherServlet-上下文初始化失败org.springframework.beans.factory.BeanCreationException:创建名称为'userController'的bean时出错:自动连接依赖项的注入失败; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.springapp.mvc.UserRepository com.springapp.mvc.UserController.userRepository;
嵌套的异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有com.springapp.mvc.UserRepository com.springapp.mvc.UserController.userRepository; nested exception is java.lang.NoSuchMethodError:
嵌套的异常是java.lang.NoSuchMethodError:
User.java User.java
package com.springapp.mvc;
import javax.persistence.*;
@Entity(name = "account")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Basic
private String firstName;
@Basic
private String lastName;
@Basic
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String name) {
this.firstName = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
UserRepository.java UserRepository.java
package com.springapp.mvc;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
UserRepositoryImpl.java UserRepositoryImpl.java
package com.springapp.mvc;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class UserRepositoryImpl implements UserRepository{
public UserRepositoryImpl() {
}
@Override
public <S extends User> S save(S entity) {
return null;
}
@Override
public User findOne(Long aLong) {
return null;
}
@Override
public boolean exists(Long aLong) {
return false;
}
@Override
public List<User> findAll() {
return null;
}
@Override
public List<User> findAll(Sort sort) {
return null;
}
@Override
public Page<User> findAll(Pageable pageable) {
return null;
}
@Override
public List<User> findAll(Iterable<Long> longs) {
return null;
}
@Override
public long count() {
return 0;
}
@Override
public void delete(Long aLong) {
}
@Override
public void delete(User entity) {
}
@Override
public void delete(Iterable<? extends User> entities) {
}
@Override
public void deleteAll() {
}
@Override
public void flush() {
}
@Override
public void deleteInBatch(Iterable<User> entities) {
}
@Override
public void deleteAllInBatch() {
}
@Override
public User getOne(Long aLong) {
return null;
}
@Override
public <S extends User> S saveAndFlush(S entity) {
return null;
}
@Override
public <S extends User> List<S> save(Iterable<S> entities) {
return null;
}
}
UserController.java UserController.java
package com.springapp.mvc;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
@Controller
public class UserController {
@Autowired
private UserRepository userRepository;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String listUsers(ModelMap model) {
model.addAttribute("user", new User());
model.addAttribute("users", userRepository.findAll());
return "users";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addUser(@ModelAttribute("user") User user, BindingResult result) {
userRepository.save(user);
return "redirect:/";
}
@RequestMapping("/delete/{userId}")
public String deleteUser(@PathVariable("userId") Long userId) {
userRepository.delete(userRepository.findOne(userId));
return "redirect:/";
}
}
mvc-dispatcher-servlet.xml mvc-dispatcher-servlet.xml
<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:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<context:component-scan base-package="com.springapp.mvc"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<jpa:repositories base-package="com.springapp.mvc"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="defaultPersistenceUnit"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
web.xml web.xml
<web-app version="2.4"
xmlns="http ://java.sun.com/xml/ns/j2ee" xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Spring MVC Application</display-name>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
The complete stacktrace shows: 完整的堆栈跟踪显示:
Caused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.findPropertyForMethod(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/beans/PropertyDescriptor;
This issue is caused by the Spring core version used (4.1.1), which has only one parameter for type Method (check here ). 此问题是由所使用的Spring核心版本(4.1.1)引起的,该版本的Method类型只有一个参数( 在此处检查)。
There is dependencies mismatch, try to change Spring version to 4.1.3 or greater. 依赖项不匹配,请尝试将Spring版本更改为4.1.3或更高版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.