Spring Boot, отображающий http запросы на индексирование, но не любое другое отображение - PullRequest
1 голос
/ 02 мая 2019

Spring Boot, отображающий HTTP-запросы к пути индекса, но не любое другое отображение.

Я создал приложение весенней загрузки, которое работает на localhost: 8060. Проблема в том, что когда я запускаю localhost: 8060 в браузере, он работает, но когда я запускаю любой другой запрос, он говорит: «Произошла непредвиденная ошибка (type = Forbidden, status = 403). Доступ закрыт'. В журналах говорится, что он нашел правильный метод, то есть он сопоставлен правильно, но все равно выдает эту ошибку.

Greetings.java



package com.skyscraper.vdisizer;

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

/**
 * Main application to launch spring boot.
 */
@RestController
public class Greetings {

    /**
     * Main application to launch spring boot.
     */
    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }

    @RequestMapping("/testing123")
    public String indextest() {
        return "Testing";
    }
}

ServerApplication

package com.vmware.skyscraper;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.annotation.EnableAsync;

/**
 * Main application to launch spring boot.
 */
@SpringBootApplication
@EnableAutoConfiguration
@EnableAsync
public class ServerApplication {

    private static Logger logger = LoggerFactory.getLogger(ServerApplication.class);

    /**
     * Start the Spring Boot application.
     *
     * @param args command line arguments
     */
    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(ServerApplication.class, args);
        logger.info("Sample Application started with context {}", context.getDisplayName());
    }
}

application.properties

# Initialize feature service.
# This flag should be set ONLY in environments where ss-backend isn't running - normally - ss-backend is set as the
# leader so that it can control (via UI) setting any and all features.
feature.service.is.leader=true

logging.level.org.springframework.web: TRACE


security.ignored=/**
security.basic.enable: false

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

Так что это делает diplay "Привет из Spring Boot!" когда я иду на localhost: 8060, но выдает ошибку на localhost: 8060 / testing123

1 Ответ

0 голосов
/ 02 мая 2019

Поскольку ваш основной класс ServerApplication находится в пакете com.vmware.skyscraper, который является базовым пакетом для приложения весенней загрузки.

Но контроллер Greetings находится в другом пакете com.skyscraper.vdisizer, который не является подпакетом основного класса. По умолчанию приложение весенней загрузки загружает все классы, аннотированные любой стереотипной аннотацией из sub packages базового пакета, как spring бобов в ApplicationContext

Использование @ComponentScan на Main, класс

@SpringBootApplication
@EnableAutoConfiguration
@EnableAsync
@ComponentScan({"com.vmware.skyscraper", "com.skyscraper.vdisizer"})
public class ServerApplication {

private static Logger logger = LoggerFactory.getLogger(ServerApplication.class);

/**
 * Start the Spring Boot application.
 *
 * @param args command line arguments
 */
public static void main(String[] args) {
    ApplicationContext context = SpringApplication.run(ServerApplication.class, args);
    logger.info("Sample Application started with context {}", context.getDisplayName());
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...