使用包含 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的几种方式
如何@Autowire 从外部 jar 创建的 spring bean?
Java Bean Validation 2.0 Hibernate Validator - 带有外部 XML 配置的可执行 JAR