微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Spring 就在那里时找不到默认构造函数?

如何解决为什么 Spring 就在那里时找不到默认构造函数?

我不断收到错误消息:

Error creating bean with name 'category' defined in file [/home/dazikiri_anikar/IdeaProjects/shop/target/classes/pl/shop/models/Category.class]: Instantiation of bean Failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [pl.shop.models.Category]: No default constructor found; nested exception is java.lang.NoSuchMethodException: pl.shop.models.Category.<init>()

这是 Spring 有问题的类:

package pl.shop.models;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Component
public enum Category {

    HEALTHY_FOOD,JUNK_FOOD,TEAS_AND_COFFEES,SPICES,GRAINS_AND_LENTILS,NUTS_AND_SEEDS,DRIED_FRUITS,SNACKS,DRINKS;

    private String categoryName;
    List<Product> productList = new ArrayList<>();
}

我找到的所有答案都是...定义认构造函数。哪个……就在那里, 来自 Lombok 的 @NoArgsConstructor,对吗? 即使我删除它并自己定义它,它也不会改变任何事情。

我尝试自己定义两个构造函数(无参数和所有参数)但无济于事,然后添加 @Autowired 导致错误,即没有“字符串”bean,这让我在这个阶段完全无能为力。

请帮忙。

解决方法

在 Java 中,Enum 只有私有构造函数。因此不能被 Spring 实例化

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。