使用包含 bean 的外部 JAR 启动 Spring Boot 应用程序时出错

Posted

技术标签:

【中文标题】使用包含 bean 的外部 JAR 启动 Spring Boot 应用程序时出错【英文标题】:Error while starting Spring boot application with external JAR containing the beans 【发布时间】:2020-12-08 14:14:31 【问题描述】:

我有一个从 Spring Initializer 创建的 Spring Boot 应用程序,我添加了一个包含 bean 的外部 JAR(手动在构建路径库中)。 bean 用@Entity 和@json 注释... 问题是启动应用程序时出现以下错误。 如果我将 bean 作为简单 bean 复制到项目中,项目将正确启动。

创建名为“userRepository”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: Not a managed type: class org.xxxxxxx.domain.User

非常感谢任何帮助

这是来自 JAR 的 bean 示例。


    package org.xxxxxxx.domain;

import java.io.Serializable;
import java.sql.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table (name="userTable", uniqueConstraints=@UniqueConstraint(columnNames="nom"))
public class User implements Serializable 
    
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    
    private Long id;
    @Column(name="nom", unique=true, nullable=false)
    private String name;
    private String motsdepasse;
    private String token;
    @ManyToOne
    private UserGroupe groupe;
    
//  @Column(columnDefinition="boolean default false")
    private boolean desactive;
    
//  @Column(columnDefinition="boolean default false")
    private boolean finalPwd;
    
    private boolean deleted;
    
    private Date datePassword;
    
    @ManyToOne
    private Branch branche;
     //getters + setters

【问题讨论】:

谁能帮忙,拜托。 【参考方案1】:

默认情况下,将搜索主配置类(带有@EnableAutoConfiguration 或@SpringBootApplication 注释的那个)下的所有包。您可以使用 @EntityScan 注释自定义实体扫描位置:

spring docs

【讨论】:

我已经使用了这个解决方案,但总是产生相同的异常。

以上是关于使用包含 bean 的外部 JAR 启动 Spring Boot 应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

springboot项目导入外部jar包的bean的几种方式

Spring4相关jar包介绍(转)

如何@Autowire 从外部 jar 创建的 spring bean?

Java Bean Validation 2.0 Hibernate Validator - 带有外部 XML 配置的可执行 JAR

如何从外部jar自动运行java任务?

springboot 启动排除某些bean 的注入