Я пробовал свои силы на технологии 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
не найдена ошибка.