应用程序启动 Spring Tool Suite 失败
Posted
技术标签:
【中文标题】应用程序启动 Spring Tool Suite 失败【英文标题】:Application Failed to Start Spring Tool Suite 【发布时间】:2022-01-21 13:17:40 【问题描述】:我正在从头开始创建一个 Spring Boot 项目并尝试运行我的项目,但它无法启动。我收到以下错误:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
***************************
APPLICATION FAILED TO START
***************************
Description:
Field users in com.example.demo.DataInitializer required a bean of type 'com.example.repository.UserDao' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.example.repository.UserDao' in your configuration.
这是我的 UserDao(存储库):
package com.example.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.example.model.User;
@Repository
public interface UserDao extends JpaRepository<User, Long>
User findByEmail(String email);
User findByStatus(int status);
这是我正在尝试运行的我的 DataInitializer 文件:
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.io.ClassPathResource;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import com.example.model.User;
import com.example.repository.UserDao;
@Component
public class DataInitializer implements CommandLineRunner
@Autowired
UserDao users;
@Autowired
private PasswordEncoder passwordEncode;
@Override
public void run(String... args) throws Exception
//System.out.println("Running spring boot demo application");
this.users.save(User.builder().email("example@gmail.com").phone("1234567890")
.username("Example Name").userid(10001L).build());
【问题讨论】:
1. Structuring your code(Spring boot 应用程序应该在根包中)2.不需要(但可能可以容忍)JpaRepository
上的@Repository
注释。(ref)
好的。让我先试试吧。
【参考方案1】:
您要么必须在演示包(应用程序类)中使用@ComponentScan,要么从演示中创建包,例如:
example.demo.package1
example.demo.package2
代替:
example.package1
(右键单击演示包并从中创建包)
如果您想使用组件扫描并保留您的包名,请参阅https://www.baeldung.com/spring-component-scanning。
如果您已经将包和类放在一个地方,您只需将它们拖到正确的包并重构它,因为它可以让您自动更改名称。
【讨论】:
以上是关于应用程序启动 Spring Tool Suite 失败的主要内容,如果未能解决你的问题,请参考以下文章
Spring Tool Suite 3.3.0.RELEASE 启动不了
如何修复 Spring Tool Suite 4 中的端口 8080 错误? [关闭]
Spring Tool Suite 和 Groovy/Grails Tool Suite 的区别
Spring Tool Suite:@Configuration 类可能不是最终的。删除 final 修饰符以继续
Fedora29 安装 spring tool suite 4.2
Spring Tool Suite(STS)启动时出现错误:Java was started but returned exit code=13问题解决