не удалось загрузить значения маршрута netflix zuul из класса конфигурации - PullRequest
0 голосов
/ 01 июля 2018

Я пробовал свои силы на технологии netflix zuul api gateway. Мне удалось направить мои URL-адреса с помощью файла application.properties. Но я не смог сделать то же самое со сторонней конфигурацией, используя ZuulProperties. Это требование. Как я могу это сделать. Я попробовал ниже код:

код класса конфигурации

package com.example.springbootzuulgatwayproxy;

import java.util.HashMap;
import java.util.Map;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
import org.springframework.cloud.netflix.zuul.filters.ZuulProperties.ZuulRoute;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

@Configuration
public class AppConfig {

    @Primary
    @Bean(name = "zuulConfigProperties")
    @RefreshScope
    @ConfigurationProperties("zuul")
    public ZuulProperties zuulProperties() {
        ZuulProperties.ZuulRoute route = new ZuulProperties.ZuulRoute("http://localhost:8090");// ZuulRoute is static inner class of ZuulProperties
        Map<String,ZuulRoute> map = new HashMap<String,ZuulRoute>();
        map.put("zuul.routes.employee.url", route);
        ZuulProperties props = new ZuulProperties();
        props.setRoutes(map);
        return props;
    }
}

здесь я ожидаю, что ZuulProperties загрузит свойство zuul.route из моего класса конфигурации ... я ошибаюсь? Как я уже сказал, я мог бы сделать это легко, используя applicatin.properties. Но это требование, где я застрял. Честно говоря, я хочу, чтобы эти свойства загружались из database. Но потом я наткнулся на этот кусок кода, он выглядел многообещающим. Но я не могу этого сделать.

основной класс

package com.example.springbootzuulgatwayproxy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import com.example.springbootzuulgatwayproxy.filters.ErrorFilter;
import com.example.springbootzuulgatwayproxy.filters.PostFilter;
import com.example.springbootzuulgatwayproxy.filters.PreFilter;
import com.example.springbootzuulgatwayproxy.filters.RouteFilter;
@ComponentScan
@SpringBootApplication
@EnableZuulProxy
public class SpringBootZuulgatwayproxyApplication {

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

    @Bean
    public PreFilter preFilter() {
        return new PreFilter();
    }
    @Bean
    public PostFilter postFilter() {
        return new PostFilter();
    }
    @Bean
    public ErrorFilter errorFilter() {
        return new ErrorFilter();
    }
    @Bean
    public RouteFilter routeFilter() {
        return new RouteFilter();
    }
}

когда я нажимаю http://localhost:8080/employee/getEmployeeDetails/{employee_name} url, почтальон выдаёт мне 404 не найдена ошибка.

...