Spring Boot: ไม่สามารถเข้าถึง REST Controller บน localhost (404)


105

ฉันกำลังพยายามปรับตัวอย่าง REST Controller บนเว็บไซต์ Spring Boot ขออภัยฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามเข้าถึงlocalhost:8080/itemURL

{
  "timestamp": 1436442596410,
  "status": 404,
  "error": "Not Found",
  "message": "No message available",
  "path": "/item"
}

ปอม:

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>SpringBootTest</groupId>
   <artifactId>SpringBootTest</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <properties>
      <javaVersion>1.8</javaVersion>
      <mainClassPackage>com.nice.application</mainClassPackage>
      <mainClass>${mainClassPackage}.InventoryApp</mainClass>
   </properties>

   <build>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
               <source>${javaVersion}</source>
               <target>${javaVersion}</target>
            </configuration>
         </plugin>

         <!-- Makes the Spring Boot app executable for a jar file. The additional configuration is needed for the cmd: mvn spring-boot:repackage 
            OR mvn spring-boot:run -->
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>

            <configuration>
               <mainClass>${mainClass}</mainClass>
               <layout>ZIP</layout>
            </configuration>
            <executions>
               <execution>
                  <goals>
                     <goal>repackage</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>

         <!-- Create a jar with a manifest -->
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
               <archive>
                  <manifest>
                     <mainClass>${mainClass}</mainClass>
                  </manifest>
               </archive>
            </configuration>
         </plugin>
      </plugins>
   </build>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <!-- Import dependency management from Spring Boot. This replaces the usage of the Spring Boot parent POM file. -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.2.5.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>

         <!-- more comfortable usage of several features when developing in an IDE. Developer tools are automatically disabled when 
            running a fully packaged application. If your application is launched using java -jar or if its started using a special classloader, 
            then it is considered a 'production application'. Applications that use spring-boot-devtools will automatically restart whenever files 
            on the classpath change. -->
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

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

      <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>15.0</version>
      </dependency>
   </dependencies>
</project>

แอปพลิเคชันเริ่มต้น:

package com.nice.application;
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class InventoryApp {
   public static void main( String[] args ) {
      SpringApplication.run( InventoryApp.class, args );
   }
}

REST- คอนโทรลเลอร์:

package com.nice.controller; 
@RestController // shorthand for @Controller and @ResponseBody rolled together
public class ItemInventoryController {
   public ItemInventoryController() {
   }

   @RequestMapping( "/item" )
   public String getStockItem() {
      return "It's working...!";
   }

}

ฉันกำลังสร้างโครงการนี้กับ Maven เริ่มต้นเป็น jar (spring-boot: run) และภายใน IDE (Eclipse)

บันทึกคอนโซล:

2015-07-09 14:21:52.132  INFO 1204 --- [           main] c.b.i.p.s.e.i.a.InventoryApp          : Starting InventoryApp on 101010002016M with PID 1204 (C:\eclipse_workspace\SpringBootTest\target\classes started by MFE in C:\eclipse_workspace\SpringBootTest)
2015-07-09 14:21:52.165  INFO 1204 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@7a3d45bd: startup date [Thu Jul 09 14:21:52 CEST 2015]; root of context hierarchy
2015-07-09 14:21:52.661  INFO 1204 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'beanNameViewResolver': replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]
2015-07-09 14:21:53.430  INFO 1204 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2015-07-09 14:21:53.624  INFO 1204 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat
2015-07-09 14:21:53.625  INFO 1204 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.23
2015-07-09 14:21:53.731  INFO 1204 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2015-07-09 14:21:53.731  INFO 1204 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1569 ms
2015-07-09 14:21:54.281  INFO 1204 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2015-07-09 14:21:54.285  INFO 1204 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2015-07-09 14:21:54.285  INFO 1204 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2015-07-09 14:21:54.508  INFO 1204 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@7a3d45bd: startup date [Thu Jul 09 14:21:52 CEST 2015]; root of context hierarchy
2015-07-09 14:21:54.573  INFO 1204 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-07-09 14:21:54.573  INFO 1204 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
2015-07-09 14:21:54.594  INFO 1204 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2015-07-09 14:21:54.594  INFO 1204 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2015-07-09 14:21:54.633  INFO 1204 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2015-07-09 14:21:54.710  INFO 1204 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2015-07-09 14:21:54.793  INFO 1204 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2015-07-09 14:21:54.795  INFO 1204 --- [           main] c.b.i.p.s.e.i.a.InventoryApp          : Started InventoryApp in 2.885 seconds (JVM running for 3.227)
2015-07-09 14:22:10.911  INFO 1204 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2015-07-09 14:22:10.911  INFO 1204 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2015-07-09 14:22:10.926  INFO 1204 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 15 ms

สิ่งที่ฉันได้ลองแล้ว:

  • การเข้าถึง URL ด้วยชื่อแอปพลิเคชัน (InventoryApp)
  • ใส่อีกอัน@RequestMapping("/")ที่ระดับชั้นเรียนของItemInventoryController

เท่าที่ฉันเข้าใจฉันไม่ต้องการบริบทของแอปพลิเคชันเมื่อใช้ Spring Boot ฉันถูกไหม?

ฉันสามารถทำอะไรได้อีกบ้างเพื่อเข้าถึงเมธอดผ่าน URL


คุณใช้งานแอปพลิเคชันได้อย่างไร? คุณอาจรวมบันทึกบางส่วนได้หรือไม่?
wjans

พยายามแยกกันผ่าน Eclipse และ mvn spring-boot: run (as jar) ดูบันทึกด้านบน (แก้ไข)
mchlfchr

จากบันทึกการเริ่มต้นดูเหมือนว่ากำลังค้นหาคอนโทรลเลอร์ของคุณไม่พบแพ็คเกจคอนโทรลเลอร์ของคุณอยู่ในแพ็คเกจใด
MattR

1
มันอยู่ในแพ็คเกจแยกต่างหาก คลาสเริ่มต้นด้วยวิธีการหลักอยู่ใน "แอปพลิเคชัน" ในขณะที่คอนโทรลเลอร์อยู่ในแพ็คเกจ "คอนโทรลเลอร์" ฉันเคยเห็นตัวอย่าง (ไม่ใช่ตัวอย่างใน spring.io) ซึ่งมีโครงสร้างในลักษณะนั้นเช่นกัน
mchlfchr

4
โดยค่าเริ่มต้นสปริงบูตจะสแกนหาส่วนประกอบในแพ็คเกจเดียวกันหรือแพ็กเกจ "ด้านล่าง" (คำนำหน้าเดียวกัน) กับคลาสแอปพลิเคชันของคุณ มิฉะนั้นคุณต้องสแกนอย่างชัดเจนเพื่อหาสิ่งเหล่านี้เช่นใช้ @ComponentScan
MattR

คำตอบ:


198

ลองเพิ่มสิ่งต่อไปนี้ในคลาส InventoryApp ของคุณ

@SpringBootApplication
@ComponentScan(basePackageClasses = ItemInventoryController.class)
public class InventoryApp {
...

สปริงบูตจะสแกนหาส่วนประกอบในแพ็คเกจด้านล่างcom.nice.applicationดังนั้นหากคอนโทรลเลอร์ของคุณอยู่ในตัวcom.nice.controllerคุณจำเป็นต้องสแกนหามันอย่างชัดเจน


ฉันมีปัญหาเดียวกัน ฉันลองใช้ส่วนประกอบสามารถ แต่ไม่มีอะไร :-( คำถามของฉัน: stackoverflow.com/questions/33000931/…
emoleumassi

1
โปรดทราบว่า@SpringBootApplicationรวมถึง@Configuration
krzakov

9
ดูเหมือนง่ายที่สุดที่จะใส่แอปพลิเคชันในแพ็กเกจ "root" เช่น "org.whatever" และตัวควบคุมบริการในแพ็กเกจย่อย
insan-e

7
ฉันมีปัญหาเดียวกัน แต่ก่อนที่จะมาถึงวิธีแก้ปัญหานี้ฉันพบว่า ... ใช้คลาสแอปพลิเคชันสปริงบูตของคุณ (ซึ่งกำหนดวิธีการหลัก) หนึ่งระดับขึ้นไปที่แพ็คเกจคอนโทรลเลอร์ .. จากนั้นคอนโทรลเลอร์จะมองเห็นได้สำหรับสิ่งนี้และจะทำงาน
Tayab Hussain

1
คุณยังสามารถใช้ '@ComponentScan (basePackages = "com.nice.controller")' การสแกนเริ่มต้นของคอมโพเนนต์เริ่มต้นบนพา ธ ซึ่งเป็นคลาสของแอพและสแกนแพ็คเกจย่อย ในกรณีนี้คุณไม่จำเป็นต้องใช้คำอธิบายประกอบ @ComponentScan มันทำโดยอัตโนมัติ หากคุณมีคอนโทรลเลอร์มากกว่า 1 ตัวคุณสามารถใส่คอนโทรลเลอร์ไว้ในแพ็คเกจที่แตกต่างกันได้ ในกรณีนี้สิ่งสำคัญคือต้องหลีกเลี่ยงความขัดแย้ง
hariprasad

48

เพิ่มคำตอบของ MattR:

ตามที่ระบุในที่นี่ , @SpringBootApplicationแทรกคำอธิบายประกอบที่จำเป็นโดยอัตโนมัติ@Configuration, @EnableAutoConfigurationและยัง@ComponentScan; แต่@ComponentScanจะมองหาส่วนประกอบในแพคเกจเดียวกับ App ที่ในกรณีนี้ของคุณในขณะที่อยู่ในการควบคุมของคุณcom.nice.application com.nice.controllerนั่นเป็นเหตุผลที่คุณได้รับ 404 เนื่องจาก App ไม่พบคอนโทรลเลอร์ในapplicationแพ็คเกจ


5
ในกรณีที่ยังไม่ชัดเจนจากคำอธิบายข้างต้นคลาสที่มีคำอธิบายประกอบ @SpringBootApplication จะต้องอยู่เหนือหรืออยู่ในระดับเดียวกันในโครงสร้างไดเร็กทอรีของคุณเป็นสิ่งที่คุณต้องการค้นหา ตัวอย่างเช่นฉันมี com.app.configuration และ com.app.controllers ฉันใส่คลาสแอปพลิเคชันของฉันลงใน com.app.configuration โดยไม่ได้ตั้งใจและทุกอย่างอื่น ๆ ใน com.app.configuration ทำงานได้ดี แต่ไม่มีการโหลดใน com.app.controllers ฉันย้ายคลาสแอปพลิเคชันไปที่ com.app และพบถั่วที่อื่นและสิ่งต่างๆก็เริ่มทำงาน มือใหม่ผิดพลาดสำหรับฉัน
glaukommatos

2
การเพิ่ม @ComponentScan (basePackages = "com.base.package") แก้ไขได้ในกรณีของฉัน
Shamli

สิ่งนี้ช่วยได้จริงๆ
Madhu Tomy

12

นักพัฒนา SpringBoot แนะนำให้ค้นหาคลาสแอปพลิเคชันหลักของคุณในแพ็คเกจรูทเหนือคลาสอื่น ๆ การใช้แพ็กเกจรูทยังอนุญาตให้ใช้คำอธิบายประกอบ @ComponentScan โดยไม่จำเป็นต้องระบุแอตทริบิวต์ basePackage ข้อมูลโดยละเอียด แต่ต้องแน่ใจว่ามีแพ็คเกจรูทแบบกำหนดเองอยู่


10

ฉันได้รับการตอบสนอง 404 เหมือนกันหลังจากบริการดำเนินการด้วยรหัสด้านล่าง

@Controller
@RequestMapping("/duecreate/v1.0")
public class DueCreateController {

}

การตอบสนอง:

{
"timestamp": 1529692263422,
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/duecreate/v1.0/status"
}

หลังจากเปลี่ยนเป็นโค้ดด้านล่างฉันได้รับคำตอบที่เหมาะสม

@RestController
@RequestMapping("/duecreate/v1.0")
public class DueCreateController {

}

การตอบสนอง:

{
"batchId": "DUE1529673844630",
"batchType": null,
"executionDate": null,
"status": "OPEN"
}

1
กรณีผู้อ่านคนอื่นไม่เห็น @Controller->@RestController
Janac Meena

7

ฉันมีปัญหานี้และสิ่งที่คุณต้องทำคือแก้ไขแพ็คเกจของคุณ หากคุณดาวน์โหลดโครงการนี้จากhttp://start.spring.io/ แสดงว่าคุณมีคลาสหลักอยู่ในแพ็คเกจ ตัวอย่างเช่นหากแพ็กเกจสำหรับคลาสหลักคือ "com.example" และคอนโทรลเลอร์ของคุณต้องอยู่ในแพ็กเกจ: "com.example.controller" หวังว่านี่จะช่วยได้


6

มี 2 ​​วิธีในการเอาชนะสิ่งนี้

  1. วางแอปพลิเคชันบูตที่จุดเริ่มต้นของโครงสร้างแพ็กเกจและวางตัวควบคุมทั้งหมดไว้ข้างใน

    ตัวอย่าง:

    แพ็คเกจ com.spring.boot.app; - แอปพลิเคชันบูตคุณ (เช่น Main Method -SpringApplication.run (App.class, args);)

    คุณวางตัวควบคุมด้วยโครงสร้างแพ็คเกจเดียวกันตัวอย่าง: แพคเกจ com.spring.boot.app.rest;

  2. กำหนดคอนโทรลเลอร์อย่างชัดเจนในแพ็คเกจ Bootup

วิธีที่ 1 สะอาดกว่า


1
spring boot เกลียดคลาสแอ็พพลิเคชันที่อยู่ภายใต้แพ็คเกจอื่นที่ไม่ใช่แพ็กเกจพื้นฐานหากแพ็กเกจพื้นฐานคือ org.someapp และถ้าเราวางไว้ภายใต้ org.someapp.app มันจะระเบิด .. : - /
Priyank Thakkar

3

คุณจำเป็นต้องแก้ไขคลาส Starter-Application ดังที่แสดงด้านล่าง

@SpringBootApplication

@EnableAutoConfiguration

@ComponentScan(basePackages="com.nice.application")

@EnableJpaRepositories("com.spring.app.repository")

public class InventoryApp extends SpringBootServletInitializer {..........

และอัปเดตโครงสร้างแพ็คเกจคอนโทรลเลอร์บริการและที่เก็บดังที่ฉันได้กล่าวไว้ด้านล่าง

ตัวอย่าง: REST-Controller

package com.nice.controller; -> ต้องแก้ไขเป็น
package com.nice.application.controller;

คุณต้องปฏิบัติตามโครงสร้างแพ็คเกจที่เหมาะสมสำหรับแพ็คเกจทั้งหมดที่อยู่ในโฟลว์ Spring Boot MVC

ดังนั้นหากคุณแก้ไขโครงสร้างแพ็กเกจบันเดิลโปรเจ็กต์ของคุณอย่างถูกต้องแอพสปริงบูตของคุณจะทำงานได้อย่างถูกต้อง


3
EnableAutoConfiguration รวมอยู่ใน @SpringBootApplication ดังนั้นจึงไม่มีประโยชน์ที่จะเพิ่มเข้าไป
Sofiane

1

แทนที่@RequestMapping( "/item" )ด้วย@GetMapping(value="/item", produces=MediaType.APPLICATION_JSON_VALUE).

บางทีมันอาจจะช่วยใครสักคน


1
มันช่วยให้ฉันรับรู้ว่าฉันเขียนnameแทนvalueในไฟล์@GetMapping.
vortex.alex

0

ฉันมีข้อผิดพลาดเดียวกันแน่นอนฉันไม่ได้ให้แพ็คเกจพื้นฐาน ให้แพ็คเกจพื้นฐานที่ถูกต้องแก้ไข

package com.ymc.backend.ymcbe;

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

@SpringBootApplication
@ComponentScan(basePackages="com.ymc.backend")
public class YmcbeApplication {

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

}

หมายเหตุ: ไม่รวม .controller @ComponentScan (basePackages = "com.ymc.backend.controller") เนื่องจากฉันมีคลาสส่วนประกอบอื่น ๆ อีกมากมายที่โครงการของฉันไม่สแกนถ้าฉันให้ .controller

นี่คือตัวอย่างคอนโทรลเลอร์ของฉัน:

package com.ymc.backend.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@CrossOrigin
@RequestMapping(value = "/user")
public class UserController {

    @PostMapping("/sendOTP")
    public String sendOTP() {
        return "OTP sent";
    };


}

0

บางครั้งสปริงบูตก็ดูแปลก ๆ ฉันระบุไว้ด้านล่างในคลาสแอปพลิเคชันและใช้งานได้:

@ComponentScan("com.seic.deliveryautomation.controller")

0

ผมได้ 404 ปัญหาเพราะUrl กรณีความไวแสง

ตัวอย่างเช่น @RequestMapping(value = "/api/getEmployeeData",method = RequestMethod.GET)ควรเข้าถึงโดยใช้http://www.example.com/api/getEmployeeData. หากเราใช้http://www.example.com/api/getemployeedataเราจะได้รับข้อผิดพลาด 404

หมายเหตุ: http://www.example.comเป็นเพียงข้อมูลอ้างอิงที่ฉันกล่าวถึงข้างต้น ควรเป็นชื่อโดเมนของคุณที่คุณโฮสต์แอปพลิเคชันของคุณ

หลังจากต่อสู้กันมามากและใช้คำตอบอื่น ๆ ทั้งหมดในโพสต์นี้ฉันพบว่าปัญหาเกิดจาก URL นั้นเท่านั้น อาจเป็นปัญหาโง่ ๆ แต่ค่าใช้จ่าย 2 ชั่วโมงของฉัน ดังนั้นฉันหวังว่ามันจะช่วยใครสักคน


0

สำหรับฉันฉันกำลังเพิ่ม spring-web แทน spring-boot-starter-web ใน pom.xml ของฉัน

เมื่อฉันเปลี่ยนจาก spring-web เป็น spring-boot-starter-web การแมปทั้งหมดจะแสดงในบันทึกของคอนโซล



0

อาจเป็นไปได้ว่ามีอย่างอื่นกำลังทำงานบนพอร์ต 8080 และคุณกำลังเชื่อมต่อกับมันโดยไม่ได้ตั้งใจ

ตรวจสอบให้แน่ชัดโดยเฉพาะอย่างยิ่งหากคุณมีนักเทียบท่าที่นำเสนอบริการอื่น ๆ ที่คุณไม่ได้ควบคุมและกำลังส่งต่อบริการเหล่านั้น


0

ปัญหาเกิดจากโครงสร้างแพ็คเกจของคุณ Spring Boot Application มีโครงสร้างแพ็คเกจเฉพาะเพื่อให้บริบทของสปริงสามารถสแกนและโหลดถั่วต่างๆในบริบทได้

ใน com.nice.application คือที่ที่ Main Class ของคุณและใน com.nice.controller คุณมีคลาสคอนโทรลเลอร์ของคุณ

ย้ายแพ็คเกจ com.nice.controller ของคุณไปยัง com.nice.application เพื่อให้ Spring เข้าถึงถั่วของคุณได้


-1

คุณสามารถเพิ่มภายใน POM

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <version>XXXXXXXXX</version>
</dependency>

-2

วางคลาส springbootapplication ของคุณในแพ็กเกจรูทเช่นหากบริการของคุณคอนโทรลเลอร์อยู่ในแพ็คเกจ springBoot.xyz คลาสหลักของคุณควรอยู่ในแพ็คเกจ springBoot มิฉะนั้นจะไม่สแกนด้านล่างแพ็คเกจ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.