Spring MVC ошибка Initializing Spring DispatcherServlet 'dispatcherServlet'

2022-06-30 21:44:26.766 INFO 7140 --- [nio-8081-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2022-06-30 21:44:26.766 INFO 7140 --- [nio-8081-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2022-06-30 21:44:26.767 INFO 7140 --- [nio-8081-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms

Ошибка происходит при попытке вызова post или get запроса из postman.

package Controller;

import dto.UserDto;
import exception.ValidationException;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.NoHandlerFoundException;
import services.UserService;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 *
 */
@RestController
@RequestMapping(path = "/users")
@AllArgsConstructor
@Log4j2
public class UserController {
    private final UserService userService;

    @PostMapping("/save")
    public UserDto saveUser(@RequestBody UserDto userDto) throws ValidationException {
        log.info("Handling save users: " + userDto);
        return userService.saveUser(userDto);
    }

    @GetMapping("/findAll")
    public List<UserDto> findAllUsers() {
        log.info("Handling find all users request");
        return userService.findAll();
    }

    @PostMapping
    public UserDto findByLogin(@RequestParam String login) {
        log.info("Handling find by login request");
        return userService.findByLogin(login);
    }

    @DeleteMapping("/delete/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
        log.info("Handling delete user request");
        return ResponseEntity.ok().build();
    }

    @ExceptionHandler(NoHandlerFoundException.class)
    public void handleNotFoundError(HttpServletResponse response, NoHandlerFoundException ex) {
        log.error("URL not found exception: " + ex.getRequestURL());
    }
}



   package app.demo_page.dto;

import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class UserDto {
    private Long id;
    private String name;
    private String login;
    private String email;

    @Override
    public String toString() {
        return "UserDto{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", login='" + login + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

package app.demo_page.entity;

import lombok.Data;

import javax.persistence.*;

@Data
@Table(name = "users")
@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String login;

    private String email;

}


    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo_page</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo_page</name>
    <description>demo_page</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>6.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

> 2022-06-30 22:21:58.318  INFO 12196 --- [           main] app.demo_page.DemoPageApplication        : Starting DemoPageApplication using Java 17.0.1 on DESKTOP-IIQ99R6 with PID 12196 (D:\GoogleDisk\Программирование\Java\demo_page\target\classes started by Mixail in D:\GoogleDisk\Программирование\Java\demo_page)
2022-06-30 22:21:58.320  INFO 12196 --- [           main] app.demo_page.DemoPageApplication        : No active profile set, falling back to 1 default profile: "default"
2022-06-30 22:21:58.942  INFO 12196 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8081 (http)
2022-06-30 22:21:58.955  INFO 12196 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-06-30 22:21:58.955  INFO 12196 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.64]
2022-06-30 22:21:59.023  INFO 12196 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-06-30 22:21:59.023  INFO 12196 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 670 ms
2022-06-30 22:21:59.052  WARN 12196 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController' defined in file [D:\GoogleDisk\Программирование\Java\demo_page\target\classes\app\demo_page\Controller\UserController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'defaultUserService' defined in file [D:\GoogleDisk\Программирование\Java\demo_page\target\classes\app\demo_page\services\DefaultUserService.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'app.demo_page.repository.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
2022-06-30 22:21:59.053  INFO 12196 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2022-06-30 22:21:59.062  INFO 12196 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-06-30 22:21:59.075 ERROR 12196 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in app.demo_page.services.DefaultUserService required a bean of type 'app.demo_page.repository.UserRepository' that could not be found.


Action:

Consider defining a bean of type 'app.demo_page.repository.UserRepository' in your configuration.


Process finished with exit code 1

Собственно вопрос: в какую сторону копать?


Ответы (2 шт):

Автор решения: the__Komar

Честно говоря не удалось воспроизвести проблему c твоим кодом заменим UserDto на свои и userService на свои заглушки.

Нужно побольше деталей.

  • Пример запроса
  • pom.xml
  • чуть больше логов
→ Ссылка
Автор решения: Sherzod Mamadaliev

Возможно, вам не хватает @Service, @Repository или @Component аннотации к вашим соответствующим классам реализации.

→ Ссылка