如何运行共享相同上下文的多个Spring Boot应用程序?

时间:2016-08-11 07:04:23

标签: spring spring-security spring-boot microservices

我想运行多个微服务应用程序共享相同的上下文,以便我可以为多个Spring启动(微服务)应用程序运行我的自定义安全过滤器。

示例:

用户服务:https://ip:port/myapp/user

产品服务:https://ip:port/myapp/product

评论服务:https://ip:port/myapp/comment

我应该为所有微服务运行一个通用过滤器(自定义安全过滤器)。

2 个答案:

答案 0 :(得分:0)

将该过滤器提取到每个微服务将使用的单独JAR中。该JAR将独立项目版本化并独立部署到您的工件库中。

事实上,在微服务环境中,您将拥有更多应该在服务之间共享的“通用”bean /功能。因此,在微服务环境中,这种常见的JAR是必需的。

答案 1 :(得分:0)

正如@luboskrnac建议的那样 - 为了安全起见,您可以简单地将您的公共逻辑提取到一个单独的JAR中。

关于您的共享应用程序上下文(我假设您只是指共享URL空间,而不是在应用程序之间共享任何特定状态等),那么是 - 您应该使用类似Zuul的内容 - 这可以采取行动作为外部和所有微服务之间的单一接口(在引擎盖下它们都将在它们自己独特的应用程序上下文命名空间/端口号中运行 - 但是Zuul可以将它们组合在一起并在一致的情况下使用漂亮的URL公开它们位置)。

幸运的是,整个Netflix microservice堆栈得到了Spring的良好支持,所以它可以合理地直接启动并运行ZuulEureka(发现服务)。

我在这里写了一个hello-world堆栈设置(以及代码):http://automateddeveloper.blogspot.co.uk/2015/09/spring-boot-netflix-oss-adventure-into.html