当前位置: 首页 > 知识库问答 >
问题:

无法命中Rest控制器Spring启动

阳勇
2023-03-14

我有低于pom的。SpringBoot应用程序中的xml。在运行应用程序时,我没有遇到任何错误。但当我通过邮递员或浏览器点击URL时,控制器中的java代码不会被执行。

波姆。xml:

<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>
  <groupId>com.example</groupId>
  <artifactId>MENU-RIGHT</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
    </properties>
  
  <dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
    </dependency>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
    </dependency>
  </dependencies>

</project>

控制器:

package com.example.controller;

import java.util.logging.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.example.model.MenuRightModel;
import com.example.service.MenuRightService;

@RestController
public class MenuRightController {

    Logger logger = Logger.getAnonymousLogger();
    @Autowired
    private MenuRightService menuRightService;
    
    @RequestMapping(value  = "/getRightByUser/{id}", method=RequestMethod.GET)
    public MenuRightModel findRightByUser(@PathVariable("id") int id) {
        logger.info("Request Received for User Id : "+id);
        return menuRightService.findRightByUser(id);
        
    }
    @RequestMapping(value  = "/getRightAll", method=RequestMethod.GET)
    public MenuRightModel findAllRight() {
        return new MenuRightModel();
        
    }
}

项目执行截图:

Spring Boot应用程序类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
@ComponentScan("src/main/java")
public class MenuRightApplication {

    public static void main(String[] args) {
    
        SpringApplication.run(MenuRightApplication.class, args);
    }
}

Spring启动存储库类:

package com.dbs.repository;

import org.springframework.stereotype.Repository;

import com.example.model.MenuRightModel;
import org.springframework.data.jpa.repository.JpaRepository;

@Repository
public interface MenuRightRepository extends JpaRepository<MenuRightModel, Integer>{
    MenuRightModel findByUserId(int id);
}

将BasePackage添加为com后。下面是一个例外情况:

2022-03-21 09:51:35.169WARN 20560 --- [ restartedMain]ConfigServletWebServerApplicationContext:在上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.factory.未满足依赖异常:创建名为'menuRightController'的bean时出错:通过字段'menuRightService'表示的未满足依赖项;嵌套异常org.springframework.beans.factory.未满足依赖异常:创建名为'menuRightServiceImpl'的bean时出错:通过字段'menuRightRepository'表示的未满足依赖项;嵌套异常org.springframework.beans.factory.NoSuchBeanDefitionException:没有可用的'com.example.repository.MenuRightRepository'类型的合格bean:预计至少有1个符合自动装配候选资格的bean。依赖注释:{@org.springframework.beans.factory.annotation.Autowed(必需=true)}2022-03-21 09:51:35.172INFO 20560 --- [ restartedMain]o.apache.catalina.core.Standard ardService:停止服务[Tomcat]2022-03-21 09:51:35.189INFO 20560 --- [ restartedMain]条件评估报告LoggingListener:

启动ApplicationContext时出错。要显示条件报告,请在启用了'debug'的情况下重新运行您的应用程序。2022-03-21 09:51:35.312ERROR 20560 --- [ restartedMain]o. s. b. d. LoggingFailureAnalysis记者:

申请启动失败

描述:

com.example.service.impl.MenuRightServiceImpl中的字段menuRightRepository需要一个无法找到的'com.example.repository.MenuRightRepository'类型的bean。

注入点有以下注解:-@org.springframework.beans.factory.annotation.Autowed(必需=true)

行动:

考虑定义一个'com'类型的bean。实例存储库。配置中的“MenuRightRepository”。

共有2个答案

乜烨霖
2023-03-14

您需要在组件扫描中添加一个包名称,在您的情况下,它是@ComponentScan("com.example.controller"),创建其他包的标准方式是在主根包下

柳和怡
2023-03-14

我相信这是你的主要课堂配置问题。默认情况下,框架将扫描主类和子包所在包中的bean。e、 g.下面的方法不起作用

com/example/控制器/FooController.java

com/example/main/main类。JAVA

as应用程序将在com中扫描bean。实例仅限主包装及其子包装。

如果是这种情况,则需要更新@SpringBootApplication annotation的“scanBasePackages”属性。

 类似资料:
  • 嗨,我用spring初始化器创建了一个简单的Spring Boot应用程序。我在主应用程序类的同一文件夹中添加了一个控制器。 这是给我以下错误的网址http://localhost:8080/welcome 此应用程序没有针对/错误的显式映射,因此您将其视为回退。 Sat Dec 19 12:51:44 IST 2020出现意外错误(类型=未找到,状态=404)。 如果我使用@restContro

  • 我正在尝试测试以下控制器: 下面是测试类: 当我运行测试失败,并给我以下消息: 当我测试的url正常工作。

  • 我正在开发一个新的应用程序,它是和camel。我将RESTendpoint作为该应用程序的一部分公开。 null 你能帮我选择更好的方案吗?

  • 我试图创建一个简单的REST服务与Spring Boot遵循本教程。webapp文件夹()中的“hello world”html文件正在上打开(我创建了一个Maven-Web-App,因为我希望有一个服务的“欢迎页面”)。但是,如果我试图访问上的REST服务,我会得到一条404消息。 UserController.java: 我错过了什么?服务的URL是否错误?我在某个地方读到Spring Boo

  • 我想验证请求参数。我已经浏览了很多博客并回答了问题,我也做了同样的事情。在控制器类上添加了@Validated。 控制器中的方法: 控制器建议 配置: 完成所有这些之后,现在我得到一个404错误。"状态":404,"错误":"未找到","消息":"没有可用的消息"

  • 我试图使用mockmvcbuilders.standalonesetup方法为一个spring mvc rest控制器创建一个非常基本的单元测试。我一直收到一个404错误。下面列出了测试应用程序上下文、测试类、控制器和整个堆栈跟踪。欢迎任何指导。 java.lang.AssertionError:状态应为:<200>但实际为:<404>在org.springframework.test.util.