Определите интерфейсный контроллер для конкретного применения в проекте - PullRequest
0 голосов
/ 27 мая 2019

Я создал внешний контроллер в проекте, содержащем несколько (REST) ​​приложений. Теперь проблема в том, что контроллер применяется ко всем приложениям, к которым я пытаюсь получить доступ через браузер. Я хотел бы спросить, является ли конфигурация или аннотация, чтобы определить, к какому приложению должен применяться контроллер.

Это код контроллера:

@Controller
public class FrontendController {

    @RequestMapping(value = "/")
    public String index() {
        return "index";
    }
}

В том же пакете реализовано приложение, которое обслуживает внешние источники:

@SpringBootApplication
public class WebServer {

    public static void main(String[] args) {
        // Tell server to look for web-server.properties or web-server.yml
        System.setProperty("spring.config.name", "web-server");

        SpringApplication.run(com.studienarbeit.chaoscenter.services.departments.DepartmentsServer.class, args);
    }

}

Другие приложения находятся в разных пакетах, и, тем не менее, они по-прежнему обслуживают внешние источники. Других контроллеров в проекте нет, и другие приложения используют репозитории Spring Data REST.

Примечание: Каждое приложение работает на своем собственном порту.

Примечание 2: Я попробовал подход, используя профиль для контроллера:

@Profile("web-server")

Поскольку я работаю с IntelliJ, я установил для активного профиля значение web-server и добавил следующий флаг в Параметры виртуальной машины для конкретного приложения:

-Dspring.profiles.active=web-server

Почему-то мои другие приложения все еще обращаются к внешнему контроллеру. Может я что то пропустил?

Примечание 3: Другие реализации приложения выглядят в основном точно так же, как приложение WebServer, и они используют репозитории Spring Data REST, которые выглядят так:

public interface EmployeeRepository extends CrudRepository<Employee, Long> {

}

1 Ответ

1 голос
/ 27 мая 2019

Используйте конкретные значения RequestMapping для каждого из ваших классов контроллеров, например:

@Controller
@RequestMapping("/controller1")
public class FrontendController {

    @RequestMapping(value = "/")
    public String index() {
        return "index";
    }
}

Таким образом, вы будете использовать эту конечную точку с URL-адресом http://localhost:8080/controller1

Кроме того, если вы не собираетесьчтобы использовать Mvc Views, и это будет только Rest Controller, используйте @RestController insted @ Controller.

@RestController
@RequestMapping("/controller1")
public class FrontendController

Это комбинация аннотаций @Controller и @ResponseBody.Подробную информацию можно найти по адресу здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...