gpt4 book ai didi

java - Spring boot @Autowired 无法初始化类

转载 作者:行者123 更新时间:2023-12-01 20:51:50 27 4
gpt4 key购买 nike

我有以下类(class):-

@SpringBootApplication
@ComponentScan("com.ma.demospringboot")
public class DemoSpringBootApp {
public static void main(String[] args) {
SpringApplication.run(DemoSpringBootApp.class, args);
}
}

我有以下类(class):-

@Service
public class TopicService {
// if I comment out following autowired, then it is ok.
@Autowired
private TopicRepository topicRepository;
}

我有以下界面:-

public interface TopicRepository extends  CrudRepository<Topic, String> {
}

我有以下类(class):-

@Entity 
public class Topic {
@Id
private String id;
private String name;
private String description;

public Topic() {
}
}

尝试执行时出现以下错误:-

<小时/>

应用程序无法启动

<小时/>

描述:

Field topicRepository in com.ma.demospringboot.service.TopicService required a bean of type 'com.ma.demospringboot.repository.TopicRepository' that could not be found.

行动:

Consider defining a bean of type 'com.ma.demospringboot.repository.TopicRepository' in your configuration.

最佳答案

Spring 容器在扫描期间未找到您的存储库类,添加 @EnableJpaRepositories 以显式指定存储库类所在的包,如下所示:

  @SpringBootApplication
@ComponentScan("com.ma.demospringboot")
@EnableJpaRepositories("com.ma.demospringboot.repository")
@EntityScan(basePackages = "com.ma.demospringboot.domain")
public class DemoSpringBootApp {
//your current code here
}

更新1:

Not a managed type: class com.ma.demospringboot.domain.Topic

现在,您的Topic实体类未找到,因此您需要@EntityScan(basePackages = "com.ma.demospringboot.domain")来扫描实体类(如上所示)。

更新2:

I did exactly as you suggested, but NOT working

您打包类的方式存在问题,请仔细检查,并确保服务器已编译/构建和使用最新的类。

关于java - Spring boot @Autowired 无法初始化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257474/

27 4 0
文章推荐: java - 如何在java中创建firebase管理员用户进行身份验证
文章推荐: java - JComboBox:选择后出现错误的形式
文章推荐: java - 是否可以在 jpa 中调用不调用 setter 的情况下更新实体
文章推荐: java - 按属性字符串对 Set 进行排序