이 응용 프로그램에는 / error에 대한 명시 적 매핑이 없습니다.


108

튜토리얼 https://spring.io/guides/gs/uploading-files/ 수행하기 위해 maven을
사용했습니다. 내가 사용한 모든 코드가 복사되었습니다.

응용 프로그램을 실행할 수 있지만 오류가 발생합니다.

Whitelabel 오류 페이지이 응용 프로그램에는 / error에 대한 명시적인 매핑이 없으므로 대체 항목으로 표시됩니다. Tue Jun 30 17:24:02 CST 2015 예기치 않은 오류가 발생했습니다 (유형 = 찾을 수 없음, 상태 = 404). 사용 가능한 메시지가 없습니다.

어떻게 고칠 수 있습니까?


게시물에 댓글을 추가했습니다. 직접 수정할 수 있습니다. 즉, 자신의 게시물에 댓글을보다
알렉산더

답변:


137

메인 클래스가 다른 클래스 위에있는 루트 패키지에 있는지 확인하십시오.

Spring Boot Application (즉, @SpringBootApplication으로 주석이 달린 클래스)을 실행할 때 Spring은 메인 클래스 패키지 아래의 클래스 만 스캔합니다.

com
   +- APP
         +- Application.java  <--- your main class should be here, above your controller classes
         |
         +- model
         |   +- user.java
         +- controller
             +- UserController.java

4
위 또는 같은 수준입니까?
Martin Erlic 2017 년

21
나는 이것을 알아내는 데 내 인생의 거의 2 시간을 보냈다!
Rakesh

7
그것도 시도했습니다. 여전히 오류입니다. 적어도 메인 페이지 즉, localhost : 8080 은 톰캣 홈페이지를 보여줘야합니다. 그렇지 않나요? 그러나 그것도 표시되지 않습니다
제작 : Zulkarnain 샤

힌트 주셔서 감사합니다. 나는 이클립스 사용자 였고 거기에는이 구성이 필요하지 않았지만 지금은 IntelliJ를 사용하고 있으며 매우 희망적이었습니다.
Armer B.

@zulkarnainshah 일반적인 tomcat 홈페이지는 여기에 포함되지 않은 WAR에 의해 생성됩니다.
Thorbjørn Ravn Andersen

61

Spring 부트 애플리케이션을 만들 때 주석으로 @SpringBootApplication주석을 답니다 . 이 주석은 애플리케이션이 작동하는 데 필요한 다른 많은 주석을 '포장'합니다. 그러한 주석 중 하나가 @ComponentScan주석입니다. 이 주석은 Spring이 Spring 컴포넌트를 찾고 실행할 애플리케이션을 구성하도록 지시합니다.

애플리케이션 클래스는 패키지 계층 구조의 맨 위에 있어야 Spring이 하위 패키지를 스캔하고 다른 필수 구성 요소를 찾을 수 있습니다.

package com.test.spring.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

아래 코드 조각 컨트롤러 패키지가 com.test.spring.boot패키지 아래에있는 것처럼 작동 합니다.

package com.test.spring.boot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

    @RequestMapping("/")
    public String home(){
        return "Hello World!";
    }
}

코드는 아래 작동하지 않는 컨트롤러 패키지로하기를받지 않는 com.test.spring.boot패키지

package com.test.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

     @RequestMapping("/")
     public String home(){
         return "Hello World!";
     }
 }

Spring Boot 문서에서 :

많은 Spring Boot 개발자는 항상 기본 클래스에 @Configuration, @EnableAutoConfiguration@ComponentScan. 이러한 주석은 함께 자주 사용되기 때문에 (특히 위의 모범 사례를 따르는 경우) Spring Boot는 편리한 @SpringBootApplication대안을 제공합니다 .

@SpringBootApplication주석이 사용하는 것과 같습니다 @Configuration, @EnableAutoConfiguration그리고 @ComponentScan기본 속성


3
아주 좋은 설명입니다. 감사합니다
Lova Chittumuri

39

ErrorController애플리케이션 에를 추가하여이 문제를 해결할 수 있습니다 . 오류 컨트롤러가 필요한 뷰를 반환하도록 할 수 있습니다.

내 응용 프로그램의 오류 컨트롤러는 다음과 같습니다.

import org.springframework.boot.autoconfigure.web.ErrorAttributes;
import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * Basic Controller which is called for unhandled errors
 */
@Controller
public class AppErrorController implements ErrorController{

    /**
     * Error Attributes in the Application
     */
    private ErrorAttributes errorAttributes;

    private final static String ERROR_PATH = "/error";

    /**
     * Controller for the Error Controller
     * @param errorAttributes
     */
    public AppErrorController(ErrorAttributes errorAttributes) {
        this.errorAttributes = errorAttributes;
    }

    /**
     * Supports the HTML Error View
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH, produces = "text/html")
    public ModelAndView errorHtml(HttpServletRequest request) {
        return new ModelAndView("/errors/error", getErrorAttributes(request, false));
    }

    /**
     * Supports other formats like JSON, XML
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH)
    @ResponseBody
    public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
        Map<String, Object> body = getErrorAttributes(request, getTraceParameter(request));
        HttpStatus status = getStatus(request);
        return new ResponseEntity<Map<String, Object>>(body, status);
    }

    /**
     * Returns the path of the error page.
     *
     * @return the error path
     */
    @Override
    public String getErrorPath() {
        return ERROR_PATH;
    }


    private boolean getTraceParameter(HttpServletRequest request) {
        String parameter = request.getParameter("trace");
        if (parameter == null) {
            return false;
        }
        return !"false".equals(parameter.toLowerCase());
    }

    private Map<String, Object> getErrorAttributes(HttpServletRequest request,
                                                   boolean includeStackTrace) {
        RequestAttributes requestAttributes = new ServletRequestAttributes(request);
        return this.errorAttributes.getErrorAttributes(requestAttributes,
                includeStackTrace);
    }

    private HttpStatus getStatus(HttpServletRequest request) {
        Integer statusCode = (Integer) request
                .getAttribute("javax.servlet.error.status_code");
        if (statusCode != null) {
            try {
                return HttpStatus.valueOf(statusCode);
            }
            catch (Exception ex) {
            }
        }
        return HttpStatus.INTERNAL_SERVER_ERROR;
    }
}

위의 클래스는 Springs BasicErrorController 클래스를 기반으로 합니다.

파일에서 다음 ErrorController과 같이 위의 인스턴스를 생성 할 수 있습니다 @Configuration.

 @Autowired
 private ErrorAttributes errorAttributes;

 @Bean
 public AppErrorController appErrorController(){return new AppErrorController(errorAttributes);}

ErrorAttributesErrorAttributes 를 구현 하여 기본값 재정의를 선택할 수 있습니다 . 그러나 대부분의 경우 DefaultErrorAttributes로 충분합니다.


1
BasicErrorController클래스 404에 대한 링크 .
Stephane

@owaism :에 대한 링크 BasicErrorController가 더 이상 좋지 않습니다. 업데이트 할 수 있습니까?
HDJEMAI

1
현재 링크 BasicErrorController가 수정되었습니다.
axiopisty

15

제 경우에는 컨트롤러 클래스에 @Controller. @RestController문제 를 해결하기 위해 변경했습니다 . 기본적 @RestController입니다 @Controller + @ResponseBody 중 하나를 사용 그래서 @RestController, 또는 @Controller함께 @ResponseBody각각의 방법으로 주석.

몇 가지 유용한 참고 사항 : https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/


작동하지만 모든 인터넷 기본 구성의 예에 따라 @Controller와 함께 작동해야합니다. RestController 만 작동하는 이유를 아는 사람이 있습니까?
초신성

클래스에 주석을 달 때 @RestController암시 적으로 @ResponseBody주석을 추가 하지만 @Controller주석을 사용하는 경우이 주석을 직접 명시 적으로 추가해야합니다.
Robin Keskisarkka

10

제 경우에는 패키지 위치 때문에 컨트롤러의 패키지가 주 클래스 패키지 위에 있어야 함을 의미합니다.

내 메인 클래스 패키지가 package co.companyname.spring.tutorial;컨트롤러 패키지라면package co.companyname.spring.tutorial.WHAT_EVER_HERE;

package co.companyname.spring.tutorial; // package for main class
@SpringBootApplication
public class FirstProjectApplication {

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


package co.companyname.spring.tutorial.controllers; // package for controllers 

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController 
public class HelloController { 

@RequestMapping("/hello")  
public String hello() {   
 return "Hello, world"; 
 }}

코딩 완료 후 부팅 대시 보드를 누릅니다.

여기에 이미지 설명 입력

컨트롤러가 매핑되고 있는지 확인하는 마지막 한 가지

Mapped "{[/hello]}" onto public java.lang.String co.companyname.spring.tutorial.controllers.HelloController.hello()

행복한 코딩


9

이는 명시 적 오류 페이지가 정의되지 않은 경우 발생합니다. 오류 페이지를 정의하려면보기를 사용하여 / error 매핑을 만듭니다. 예를 들어 아래 코드는 오류 발생시 반환되는 문자열 값에 매핑됩니다.

package com.rumango.controller;

import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class IndexController implements ErrorController{
    private final static String PATH = "/error";
    @Override
    @RequestMapping(PATH)
    @ResponseBody
    public String getErrorPath() {
        // TODO Auto-generated method stub
        return "No Mapping Found";
    }

}

코드에 설명을 추가 할 수 있습니까? 중요한 부분 인 질문을 왜 해결합니까?
Nico Haase 2018

처음에는 약간의 두통을 일으킨 Spring Boot와 관련 하여이 답변에서 주목할 한 가지 특정 사항이 있습니다. springframework의 ErrorController 인터페이스를 구현하는 것이 중요합니다. 이렇게하지 않고 "/ error"에 매핑 된 컨트롤러 끝점을 만들면 메서드가 이미 매핑되었음을 알리는 오류가 발생합니다.
mmaynar1

8

종속성을 추가해보십시오.

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

2
이것은 실제로 무엇을 하는가?
Stealth Rabbi

이 종속성을 추가했고 작동했습니다. @StealthRabbi처럼 ... 나는 또한 그것이 실제로 무엇을하는지 궁금합니다.
twindham

@StealthRabbi Thymeleaf라는 템플릿 프레임 워크에 종속성을 추가합니다. 이는 JSP에 대한 대안이자 선호되는 접근 방식입니다. 이 답변은 종속 주위에 던지고, IMO 진정한 해답을지지 않습니다 정말 핵심 문제에 관심이없는 도움말 사람
기독교

5

이 종속성을 추가하여 내 문제를 해결했습니다.

<dependency>
    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

내 이론은 다음과 같습니다. "@Controller"를 사용한다면 Spring은 어떤 템플릿 엔진을 필요로 할 것입니다. 이 경우에는 Thymeleaf입니다. 따라서 spring-boot-starter-thymeleaf가 필요합니다. "@RestController"를 사용한다면 Spring Boot에는 템플릿 엔진이 필요하지 않습니다. 따라서 Thymeleaf 없이도 작동합니다.
Yosi Pramajaya 2019

4

나는 몇 주 동안 Spring Boot 애플리케이션을 개발하고있다. 그리고 나는 아래와 같은 같은 에러를 얻었다.

Whitelabel 오류 페이지이 응용 프로그램에는 / error에 대한 명시적인 매핑이 없으므로 대체 항목으로 표시됩니다. Thu Jan 18 14:12:11 AST 2018 예기치 않은 오류가 발생했습니다 (유형 = 찾을 수 없음, 상태 = 404). 사용 가능한 메시지가 없습니다.

이 오류 마사지를 받으면 컨트롤러 또는 나머지 컨트롤러 클래스가 내 프로젝트에 정의되어 있음을 깨달았습니다. 나는 우리의 모든 컨트롤러 패키지가 @SpringBootApplication 주석을 포함하는 메인 클래스와 동일한 패키지가 아니라는 것을 의미합니다 . 내 말 은 @SpringBootApplication 주석을 포함하는 메인 클래스 에 @ComponentScan 주석에 컨트롤러 패키지의 이름을 추가해야 함을 의미합니다 . 아래의 문제가 해결 될 것입니다 ... 가장 중요한 것은 아래에서했던 것처럼 모든 컨트롤러의 패키지를 @ComponentScan 주석에 추가해야한다는 것입니다.

package com.example.demo;

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

@SpringBootApplication
@ComponentScan({ "com.controller.package1, com.controller.package2, com.controller.package3, com.controller.packageN", "controller", "service" } // If our Controller class or Service class is not in the same packages we have //to add packages's name like this...directory(package) with main class
public class MainApp {
    public static void main(String[] args) {
        SpringApplication.run(MainApp.class, args);
    }
}

이 코드가 누군가를 도울 수 있기를 바랍니다.

이 오류를 해결하는 다른 방법을 찾거나 저에게 제안 사항이 있으면 의견을 작성해주세요 ... 감사합니다 ...


4

기본 클래스에서 "@SpringBootApplication"구성 후 인수없이 "@ComponentScan"을 추가하면 저에게 효과적이었습니다 !!!

메인 클래스 :

@SpringBootApplication
@ComponentScan
public class CommentStoreApplication {

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

    }
}

RestController 클래스 :

@RestController
public class CommentStoreApp {

    @RequestMapping("/") 
    public String hello() {
        return "Hello World!";
    }
}

추신 : 응용 프로그램을 시작하기 전에 mvn clean 및 mvn install 명령을 실행하는 것을 놓치지 마십시오.


4

파티에 꽤 늦었어요. Spring 공식 문서에 따르면 "Spring Boot는 서버 오류가 발생하면 브라우저 클라이언트에 표시되는 whitelabel 오류 페이지를 설치합니다." https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-whitelabel-error-page

  1. application.yml 또는 application.properties 파일 server.error.whitelabel.enabled=false에서 설정하여 기능을 비활성화 할 수 있습니다 .

2. 권장 방법 은 최종 사용자가 이해할 수 있도록 오류 페이지를 설정하는 것입니다. resources / templates 폴더 아래 에서 error.html 파일을 만들고 pom.xml 파일 에 종속성을 추가 하십시오.

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

Spring은 자동으로 error.html 페이지를 기본 오류 템플릿으로 선택합니다. 참고 :-종속성을 추가 한 후 Maven 프로젝트를 업데이트하는 것을 잊지 마십시오.


3

오류가 발생할 수 있습니다.

"이 응용 프로그램에는 / error에 대한 명시적인 매핑이 없으므로 대체로보고 있습니다."

이것은 main () 클래스에서 지정해야하는 컨트롤러 및 서비스 클래스를 스캔하지 않기 때문입니다.

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
**@ComponentScan({"com.example.demo", "controller", "service"})**
public class SpringBootMvcExample1Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootMvcExample1Application.class, args);
    }
}

참고 : 여기에서는 검사 할 데모, 컨트롤러 및 서비스와 같은 다양한 클래스를 지정했는데 제대로 작동합니다.


3

다른 모든 패키지의 아버지 인 public static main (또는 @SpringBootApplication을 작성한 곳)을 포함하는 패키지가되도록 패키지를 구성해야합니다.


-com.mypackage + nameApplication.java-com.mypachage.model-com.mypachage.controller-com.mypachage.dao
sakgeek

3

기본적으로 스프링 부트는 빈 정의를 위해 현재 패키지를 스캔합니다. 따라서 기본 클래스가 정의되어 있고 컨트롤러 패키지가 동일하지 않거나 컨트롤러 패키지가 기본 앱 패키지의 하위 패키지가 아닌 경우 컨트롤러를 스캔하지 않습니다. 이 문제를 해결하기 위해 메인 패키지에 빈 정의를위한 패키지 목록을 포함 할 수 있습니다.

@SpringBootApplication(scanBasePackages = {"com.module.restapi1.controller"})

또는 하위 패키지가 기본 패키지에서 파생 된 패키지의 계층을 생성합니다.

package com.module.restapi;
package com.module.restapi.controller

2

문제는 가이드에 명시된대로 localhost : 8080 / upload 대신 localhost : 8080 /로 이동하고 있다는 것입니다. Spring Boot에는 정의되지 않은 경로로 이동할 때 사용되는 기본 오류 페이지가있어 서버 별 세부 정보 (보안 위험으로 볼 수 있음)를 제공하지 않습니다.

옵션은 오른쪽 페이지를 방문하거나, 자신의 방문 페이지를 추가하거나 , 흰색 오류 페이지를 재정의하는 것입니다 .

이 특정 상황을 단순화하기 위해 / upload 대신 /를 사용하도록 가이드를 업데이트했습니다.


2

나는 그것이 질문에 대한 정확한 답이 아니라는 것을 알고 있지만,이 질문은 Google에 처음 나타나는 것입니다. :)

Swagger UI에 액세스하려고 할 때 문제 ( "이 응용 프로그램에는 / error에 대한 명시 적 매핑이 없습니다")가 나타납니다.

제 경우에는 @RestController ( "/ endpoint")로 인해 문제가 발생했으며, 이는 swagger에 의해 제대로 처리되지 않습니다.

따라서 이로 인해 오류가 발생했습니다.

@RestController("/endpoint")
public class EndpointController {

그리고 이것은 괜찮 았습니다

@RestController
@RequestMapping("/endpoint")
public class EndpointController {

2

컨트롤러 클래스 맨 위에있는 @RestController 어노테이션을 잊어 버린 경우 이런 일이 발생할 수 있습니다. import import org.springframework.web.bind.annotation.RestController;

다음과 같이 주석을 추가하십시오.

아래의 간단한 예를 참조하십시오

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;


@RestController
public class HelloController {
@RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }

}

1

컨트롤러 클래스에서 @Controller를 @RestController로 변경하면 모든 것이 원활하게 진행됩니다.


1

나도 같은 오류가 발생하여 pom.xml에 아래 종속성을 추가하여 오류를 해결할 수있었습니다.

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

이유는 JSP를 뷰로 사용하고 있기 때문입니다. Spring Boot Starter Web의 기본 임베디드 서블릿 컨테이너는 tomcat입니다. JSP 지원을 활성화하려면 tomcat-embed-jasper에 대한 종속성을 추가해야합니다.

제 경우에는 컨트롤러에서보기로 JSP를 반환했습니다. 이 답변이 같은 문제로 어려움을 겪고있는 사람에게 도움이되기를 바랍니다.


1

나는 gradle을 사용하여 동일한 문제에 직면했고 다음 종속성을 추가하여 해결되었습니다.

compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
compile('org.apache.tomcat.embed:tomcat-embed-jasper')

이전에 동일한 오류를 일으키는 마지막 항목이 누락되었습니다.


나는 같은 문제가 있었고 pom.xml에 tomcat-embed-jasper 플러그인이 누락되었습니다. 그리고 tomcat-embed-jasper는 jsp를 렌더링하는 데 중요합니다.
rinilnath

boraji.com/… , 이로 인해 tomcat-embed-jasper가 누락되었습니다
rinilnath

1

나는이 문제에 직면하고 있었고 나중에 기본적으로 및에 대한 매핑을 수행하는 클래스 에서 @Configuration주석 이 누락되었음을 깨달았습니다 .MvcConfigViewControllerssetViewNames

다음은 파일의 내용입니다.

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
**@Configuration**
public class MvcConfig implements WebMvcConfigurer{
   public void addViewControllers(ViewControllerRegistry registry)
   {
      registry.addViewController("/").setViewName("login");
      registry.addViewController("/login").setViewName("login");
      registry.addViewController("/dashboard").setViewName("dashboard");
   }
}

이것이 누군가를 돕기를 바랍니다 !!


이것은 나를 위해 해냈습니다.
안토니 오 코스

1

종속성 목록에 jasper 및 jstl이 있는지 확인하십시오.

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

다음은 작업 시작 프로젝트입니다. //github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp

저자 : Biju Kunjummen


1

이런 식으로 언급하고 패키지에 대한 참조를 제공해야합니다. @EnableAutoConfiguration이 주석을 제외 할 수 있지만 DB 관련 종속성을 우회해야합니다.

@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@ComponentScan(basePackages = {"your package 1", "your package2"})

public class CommentStoreApplication {

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

    }
}


0

이런 종류의 문제를 해결하기 위해 내가 한 것은 MVCConfig 클래스에서 @Configuration 주석을 언급하는 것 입니다.

이 같은 :

package com.example;

/**
 * Created by sartika.s.hasibuan on 1/10/2017.
 */
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@EnableAutoConfiguration
@Configuration
@ComponentScan
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/home").setViewName("home");
        registry.addViewController("/").setViewName("home");
        registry.addViewController("/hello").setViewName("hello");
        registry.addViewController("/login").setViewName("login");
    }

}

0

비슷한 실수가 있었는데, 스프링 부트와 속도를 사용했습니다. 제 해결책은 application.properties, spring.velocity.toolbox-config-location 파일을 확인하는 것입니다.이 속성이 잘못되었음을 발견했습니다.


0

제 경우에는 maven으로 먼저 실행 한 후 IntelliJ 내에서 SpringApplication을 실행할 때이 문제가 발생합니다.

문제를 해결하기 위해 먼저 실행 mvn clean합니다. 그런 다음 IntelliJ 내에서 SpringApplication을 실행합니다.


0

메인을 확인하십시오. 클래스 는 컨트롤러 위에 있어야합니다. 다음 예의 경우 :

Main.class 포함 :

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

EmployeeController. 다음을 포함하는 클래스 :

@RestController
public class EmployeeController {
    @InitBinder
    public void setAllowedFields(WebDataBinder dataBinder) {
        dataBinder.setDisallowedFields("id");
    }

    @RequestMapping(value = "/employee/save", method = RequestMethod.GET)
    public String save(){
        Employee newEmp = new Employee();
        newEmp.setAge(25);
        newEmp.setFirstName("Pikachu");
        newEmp.setId(100);
        return "Name: " + newEmp.getFirstName() + ", Age: " + newEmp.getAge() + ", Id = " + newEmp.getId();
    }
}

메인 클래스가 루트 폴더에있는 경우 다음 경로와 같이 {projectname} / src / main / java / main 다음 컨트롤러가 Main 클래스 아래에 있는지 확인하십시오. 예를 들면 {projectname} / src / main / java / main / controllers 입니다.


0

메인 클래스가있는 자바 파일 (예 : Viper.java)에 "@RestController"@RequestMapping ( "/")이 추가됩니다.

@SpringBootApplication
@RestController
public class Viper {

  @RequestMapping("/")

   public String home(){
          return "This is what i was looking for";                      
     }

public static void main( String[] args){

   SpringApplication.run(Viper.class , args);
}

}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.