问题描述
我不断收到错误消息:
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 实例化