Skip to content

Instantly share code, notes, and snippets.

@golonzovsky
Last active February 10, 2016 19:01
Show Gist options
  • Save golonzovsky/752ee0d0060013e270eb to your computer and use it in GitHub Desktop.
Save golonzovsky/752ee0d0060013e270eb to your computer and use it in GitHub Desktop.
spring cloud consul ui
package org.springframework.cloud.ui;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.consul.ConsulProperties;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
import org.springframework.cloud.netflix.zuul.filters.ZuulProperties.ZuulRoute;
import org.springframework.cloud.netflix.zuul.web.ZuulHandlerMapping;
import org.springframework.cloud.ui.ConsulUiController;
import org.springframework.context.annotation.Bean;
@EnableZuulProxy
public class ConsulUiConfiguration {
@Autowired
private ZuulProperties zuulProperties;
@Autowired
private ConsulProperties consulProperties;
@Autowired
private ZuulHandlerMapping zuulHandlerMapping;
public ConsulUiConfiguration() {
}
@PostConstruct
public void init() {
String url = String.format("http://%s:%s", new Object[]{this.consulProperties.getHost(), Integer.valueOf(this.consulProperties.getPort())});
ZuulRoute route = new ZuulRoute("consulUi", "/v1/**", (String)null, url, false, Boolean.valueOf(false));
this.zuulProperties.getRoutes().put("consulUi", route);
this.zuulHandlerMapping.registerHandlers();
}
@Bean
public ConsulUiController consulUiController() {
return new ConsulUiController();
}
}
package org.springframework.cloud.ui;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping({"${spring.cloud.consul.ui.path:/ui}"})
public class ConsulUiController {
public ConsulUiController() {
}
@RequestMapping(
method = {RequestMethod.GET}
)
public String index() {
return "forward:index.html";
}
}
package org.springframework.cloud.ui;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.cloud.netflix.zuul.EnableZuulServer;
import org.springframework.cloud.ui.ConsulUiConfiguration;
import org.springframework.context.annotation.Import;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({ConsulUiConfiguration.class})
@EnableZuulServer
public @interface EnableConsulUi {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment