Spring boot 2.0.3.RELEASE, Spring data rest, application error, failed to start
Posted
技术标签:
【中文标题】Spring boot 2.0.3.RELEASE, Spring data rest, application error, failed to start【英文标题】: 【发布时间】:2019-04-25 02:11:40 【问题描述】:无法启动 Spring Boot 应用程序。
存储库及其关联域
import com.vircosolutions.mobileapi.domain.Awards;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource(exported = false)
public interface AwardsRepository extends JpaRepository<Integer,
Awards>
域
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
@Getter
@Setter
@Entity
@Table(name = "awards")
public class Awards implements Serializable
private static final long serialVersionUID = -170576994834461289L;
@Id
@Column(name = "id_awards", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne
@JoinColumn(name = "id_user", nullable = false)
private Users user;
@Column (name = "rating", nullable = false)
private float rating;
@Column (name = "award_type", nullable = false)
private String awardType;
@Column (name = "award_date", nullable = false)
private Date awardDate;
@Override
public boolean equals(Object o)
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Awards awards = (Awards) o;
return id == awards.id &&
Float.compare(awards.rating, rating) == 0 &&
Objects.equals(user, awards.user) &&
Objects.equals(awardType, awards.awardType) &&
Objects.equals(awardDate, awards.awardDate);
@Override
public int hashCode()
return Objects.hash(id, user, rating, awardType, awardDate);
@Override
public String toString()
return "Awards" +
"id=" + id +
", user=" + user +
", rating=" + rating +
", awardType='" + awardType + '\'' +
", awardDate=" + awardDate +
'';
主应用程序文件看起来像
@EnableSpringDataWebSupport
@SpringBootApplication
public class MobileApplication extends SpringBootServletInitializer
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)
return super.configure(builder);
public static void main(String[] args)
SpringApplication.run(MobileApplication.class, args);
我调试了很多,但无法找出根本原因。下面给出了 Stach 跟踪。如果您需要任何其他文件和代码,可以提供。任何帮助将不胜感激。
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2018-11-22
16:30:35,341 错误方法:[main] boot.SpringApplication (SpringApplication.java:842) - 应用程序运行失败 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名称为“repositorySearchController”的 bean 时出错 网址 [jar:文件:/home/rashid/.m2/repository/org/springframework/data/spring-data-rest-webmvc/3.0.8.RELEASE/spring-data-rest-webmvc-3.0.8.RELEASE.jar !/org/springframework/data/rest/webmvc/RepositorySearchController.class]: 通过构造函数参数 0 表示的不满足的依赖关系; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建类中定义的名称为“pagedResourcesAssembler”的bean 路径资源 [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.web.PagedResourcesAssembler]: 工厂方法“pagedResourcesAssembler”抛出异常;嵌套的 例外是 org.springframework.beans.factory.BeanCreationException: 在类路径中定义名称为“pageableResolver”的 bean 创建错误 资源 [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.web.PageableHandlerMethodArgumentResolver]: 工厂方法“pageableResolver”抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“sortResolver”的bean [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.web.HateoasSortHandlerMethodArgumentResolver]: 工厂方法“sortResolver”抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建类中定义的名称为“repositoryRestConfiguration”的bean 路径资源 [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.rest.core.config.RepositoryRestConfiguration]: 工厂方法“repositoryRestConfiguration”抛出异常;嵌套的 例外是 org.springframework.beans.factory.BeanCreationException: 在类路径中定义名称为“存储库”的 bean 创建错误 资源 [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.repository.support.Repositories]:工厂 方法“存储库”抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“awardsRepository”的bean:调用init方法 失败的;嵌套异常是 java.lang.IllegalArgumentException: Not a 托管类型:class java.lang.Integer at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:732) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:197) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1276) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1133) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:503) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:760) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE] 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE] 在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395) [spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:327) [spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) [spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE] 在 com.vircosolutions.mobileapi.MobileApplication.main(MobileApplication.java:19) [classes/:?] 引起: org.springframework.beans.factory.BeanCreationException:错误 创建类中定义的名称为“pagedResourcesAssembler”的bean 路径资源 [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.web.PagedResourcesAssembler]: 工厂方法“pagedResourcesAssembler”抛出异常;嵌套的 例外是 org.springframework.beans.factory.BeanCreationException: 在类路径中定义名称为“pageableResolver”的 bean 创建错误 资源 [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.web.PageableHandlerMethodArgumentResolver]: 工厂方法“pageableResolver”抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“sortResolver”的bean [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.web.HateoasSortHandlerMethodArgumentResolver]: 工厂方法“sortResolver”抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建类中定义的名称为“repositoryRestConfiguration”的bean 路径资源 [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.rest.core.config.RepositoryRestConfiguration]: 工厂方法“repositoryRestConfiguration”抛出异常;嵌套的 例外是 org.springframework.beans.factory.BeanCreationException: 在类路径中定义名称为“存储库”的 bean 创建错误 资源 [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.repository.support.Repositories]:工厂 方法“存储库”抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“awardsRepository”的bean:调用init方法 失败的;嵌套异常是 java.lang.IllegalArgumentException: Not a 托管类型:class java.lang.Integer at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:590) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE]
【问题讨论】:
更新了您的问题:删除 POM 并发布 AwardsRepository 及其关联实体的代码。我猜你已经颠倒了泛型参数声明的顺序。 @AlanHay 已更新。 【参考方案1】:您以错误的顺序指定了泛型类型,因此出现错误Not a managed type: class java.lang.Integer
试试:
@RepositoryRestResource(exported = false)
public interface AwardsRepository extends JpaRepository<Awards, Integer>
顺便说一句,根据命名约定,您还应该将实体 Awards 重命名为 Award,并相应地重命名存储库。
【讨论】:
认真的喜欢。我想我现在需要休息,停止编码,现在就去睡觉。不管怎样,谢谢你,你救了我。以上是关于Spring boot 2.0.3.RELEASE, Spring data rest, application error, failed to start的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot 2.0.3.RELEASE, Spring data rest, application error, failed to start
Spring Boot 2.0.3RELEASE+Swagger2 2.9.2+Swagger ui 2.9.2 + easypoi 3.2.0版本不兼容
基于Spring Boot 2.0.3的Spring Cloud Eureka Server与Client