GVKun编程网logo

部署带有服务的Cloudfoundry应用(Spring Boot)(服务器部署springboot项目)

13

本文将介绍部署带有服务的Cloudfoundry应用的详细情况,特别是关于SpringBoot的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于(六十

本文将介绍部署带有服务的Cloudfoundry应用的详细情况,特别是关于Spring Boot的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于(六十四) springcloud+springcloud+vue+uniapp分布式微服务电商 商城之Spring Boot Admin的介绍及使用、Cloud Foundry参赛博文——CloudFoundry源代码学习笔记之vmc、Cloud Foundry应用开发大赛、cloudfoundry spring security的知识。

本文目录一览:

部署带有服务的Cloudfoundry应用(Spring Boot)(服务器部署springboot项目)

部署带有服务的Cloudfoundry应用(Spring Boot)(服务器部署springboot项目)

我在Cloudfoundry中部署带有服务的应用程序时遇到问题。已经一个星期了,我找不到解决方案。您能告诉我我的代码有什么问题吗?顺便说一句,我可以在没有服务的情况下进行部署,但是在绑定服务并尝试连接到数据库时会挂起部署。我在部署中使用spring
sts。我希望有人可以帮助我解决这个问题。

这是我的参考顺便说一句:https :
//github.com/jwlayug/spring-cloud和https://github.com/jwlayug/spring-cloud/tree/master/spring-service-
connector

我的密码

@Configuration@ComponentScan@EnableAutoConfigurationpublic class Application extends AbstractCloudConfig {    @Bean    public DataSource inventoryDataSource() {        return connectionFactory().dataSource("jwlpostgre");    }    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}@Entityclass User {    @Id    @GeneratedValue    private long id;    private String name;    public User() {    }    public User(String name) {        this.name = name;    }    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String toString() {        return this.name;    }}interface UserRepository extends JpaRepository<User, Long> {}@Controllerclass MyController {    @Autowired    UserRepository userRepository;    @RequestMapping(value = "/")    public String sample(Model model) {        model.addAttribute("sample", "Sample");        userRepository.save(new User("a"));        userRepository.save(new User("b"));        userRepository.save(new User("c"));        model.addAttribute("findall", userRepository.findAll());        for (User user : userRepository.findAll()) {            System.out.println(user.getName());        }        return "sample";    }}

pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>org.demo</groupId>    <artifactId>demo</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>springboot</name>    <description>Demo project</description>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.0.2.RELEASE</version>    </parent>    <repositories>        <repository>            <id>org.springframework.maven.milestone</id>            <name>Spring Maven Milestone Repository</name>            <url>http://repo.spring.io/milestone</url>        </repository>    </repositories>    <dependencies>        <dependency>            <groupId>org.postgresql</groupId>            <artifactId>postgresql</artifactId>            <version>9.3-1101-jdbc41</version>        </dependency>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-service-connector</artifactId>            <version>0.9.2</version>        </dependency>        <!-- If you intend to deploy the app on Cloud Foundry, add the following -->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>cloudfoundry-connector</artifactId>            <version>0.9.2</version>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-jpa</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-actuator</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-thymeleaf</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-rest</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>    </dependencies>    <properties>        <start-class>demo.Application</start-class>        <java.version>1.7</java.version>    </properties>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

答案1

小编典典

如果您没有多个数据库数据源,则无需添加该bean或为其命名。

确保您排除数据源自动配置,因为这会导致问题。

package com.mycompany.myapp;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScan@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class) public class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

使用当前版本对我有用。更新到最新和最伟大的。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.gopivotal</groupId>    <artifactId>redisstore</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar</packaging>    <name>myapp</name>    <description>myapp</description>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.1.3.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-actuator</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-redis</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-jpa</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>               <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-jdbc</artifactId>        </dependency>        <dependency>            <groupId>postgresql</groupId>            <artifactId>postgresql</artifactId>            <version>${postgres-driver.version}</version>            <scope>runtime</scope>        </dependency>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-spring-service-connector</artifactId>        <version>1.0.0.RELEASE</version>    </dependency>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-cloudfoundry-connector</artifactId>        <version>1.0.0.RELEASE</version>    </dependency>    </dependencies>    <!-- Transitively bring in the Spring IO Platform Bill-of-Materials `pom.xml` -->        <dependencyManagement>        <dependencies>            <dependency>                <groupId>io.spring.platform</groupId>                <artifactId>platform-bom</artifactId>                <version>1.0.0.RELEASE</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement><repositories> <repository>       <id>org.springframework.maven.milestone</id>       <name>Spring Maven Milestone Repository</name>       <url>http://repo.spring.io/milestone</url>     </repository></repositories>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <start-class>com.mycompany.myapp.Application</start-class>        <java.version>1.7</java.version>        <postgres-driver.version>9.0-801.jdbc4</postgres-driver.version>    </properties>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

(六十四) springcloud+springcloud+vue+uniapp分布式微服务电商 商城之Spring Boot Admin的介绍及使用

(六十四) springcloud+springcloud+vue+uniapp分布式微服务电商 商城之Spring Boot Admin的介绍及使用

Spring Boot 有一个非常好用的监控和管理的源软件,这个软件就是 Spring Boot Admin。该软件能够将 Actuator 中的信息进行界面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功能。

主要的功能点有:

  • 显示应用程序的监控状态
  • 应用程序上下线监控
  • 查看 JVM,线程信息
  • 可视化的查看日志以及下载日志文件
  • 动态切换日志级别
  • Http 请求信息跟踪
  • 其他功能点……


可点击 https://github.com/codecentric/spring-boot-admin 更多了解 Spring-boot-admin。

创建Spring Boot Admin项目

创建一个 Spring Boot 项目,用于展示各个服务中的监控信息,加上 Spring Boot Admin 的依赖,具体代码如下所示。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.0.2</version>
</dependency>

创建一个启动类,具体代码如下所示。

@EnableAdminServer
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

在属性文件中增加端口配置信息:

server.port=9091

启动程序,访问 Web 地址 http://localhost:9091 就可以看到主页面了,这个时候是没有数据的,如图 1 所示。

将服务注册到 Spring Boot Admin

创建一个 Spring Boot 项目,名称为 spring-boot-admin-client。添加 Spring Boot Admin Client 的 Maven 依赖,代码如下所示。

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.0.2</version>
</dependency>

然后在属性文件中添加下面的配置:

server.port=9092
spring.boot.admin.client.url=http://localhost:9091

spring.boot.admin.client.url:Spring Boot Admin 服务端地址。

将服务注册到 Admin 之后我们就可以在 Admin 的 Web 页面中看到我们注册的服务信息了,如图 2 所示。

点击实例信息跳转到详细页面,可以查看更多的信息,如图 3 所示。

可以看到详情页面并没有展示丰富的监控数据,这是因为没有将 spring-boot-admin-client 的端点数据暴露出来。

在 spring-boot-admin-client 中加入 actuator 的 Maven 依赖,代码如下所示。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

然后在属性文件中追加下面的配置:

management.endpoints.web.exposure.include=*

management.endpoints.web.exposure.include:暴露所有的 actuator 端点信息重启 spring-boot-admin-client,我们就可以在详情页面看到更多的数据,如图 4 所示。

监控内容介绍

自定义的 Info 信息、健康状态、元数据,如图 5 所示。

CPU、线程等信息如图 6 所示。

内存使用情况如图 7 所示。

配置信息如图 8 所示。

日志级别调整如图 9 所示。

Http请求信息如图 10 所示。

如何在Admin中查看各个服务的日志

Spring Boot Admin 提供了基于 Web 页面的方式实时查看服务输出的本地日志,前提是服务中配置了 logging.file。

我们在 spring-boot-admin-client 的属性文件中增加下面的内容:

logging.file=/Users/zhangsan/Downloads/spring-boot-admin-client.log

重启服务,就可以在 Admin Server 的 Web 页面中看到新加了一个 Logfile 菜单,如图 11 所示。

推荐电子商务源码

Cloud Foundry参赛博文——CloudFoundry源代码学习笔记之vmc

Cloud Foundry参赛博文——CloudFoundry源代码学习笔记之vmc

vmc版本升级变化较大,且有不兼容现象。本博文仅适用于 vmc 0.4.* 之前版本,否则参考价值不大。本文不再更新。
vmc/
|-- bin/
|   |__ vmc
|-- caldecott_helper/
|   |__ server.rb
|-- config/
|   |-- micro/
|   |__ clients.yml 
|-- lib/
|-- Rakefile
|__ vmc.gemspec

vmc 是Cloud Foundry对外的命令行接口,同时它也是一个Ruby gem。

vmc.gemspec

从 vmc.gemspec 文件,我们除了可以看到该 gem 的作者, 版本, 描述等基本信息外,重要的是可以知道它依赖于哪些其它的 gem 。

有关 Gem 的更多描述,可以阅读 Specification Reference

Rakefile

通过 gem install vmc 安装 vmc 后,我们可以运行的 rake 任务。

关键的有 rake spec 运行测试(敲入 rake 默认也是运行此命令),还有就是 rake clean 清除之前跑过的测试数据,还''环境''一片干净的''天空''。

一, bin 目录

vmc

也就是说安装 vmc 后,我们就可以有 vmc 可执行命令了。

二, caldecott_helper 目录

server.rb

一个简单的 Sinatra 程序。

主要实现: 当我们请求 /services 时,返回 ENV 中所有的 VMC_SERVICES 信息,而请求 /services/:service 时,则从 VMC_SERVICES 中返回我们指定的某个 service 的信息。

三, config 目录

clients.yml

默认 vmc 可以像在本地一样访问远端的以下服务: 最常用的关系数据库[mysql, postgresql], 最常用的NoSQL[redis, mongodb]。而这我们只需提供一些简单的信息,如 host, port, password等。

micro 目录

vmc 可执行文件在具体操作系统中的路径。

将宿主机的 ip 保存到临时文件 "tmp/ip.txt" 中

四, lib 目录

vmc 主要由两部分组成 cli 和 vmc 。

1, cli 目录

  • commands 目录

对通过 vmc 执行的任务做简单分类

有这几类 admin, apps, manifest, micro, misc, services, user ,我们可以将''这些分类''理解为 rails 中的 resources, 将此 commands 目录下的各个文件理解为 controllers 中的 ‘xxx_controller’ 文件,而 base.rb 则同样可以理解为 application_controller.rb -- 这样就容易理解了。

  • config.rb

主要配置这6部分:target, token, instances, aliases, micro 还有 clients

通过 vmc 与服务器或 micro CF 交互时的一些基本信息还有保存路径等

  • console_helper.rb (仅针对能用console的app(如rails app)有效)

实现console相关功能的代码(例如: console 之前要auth )

根据 appname 看能不能使用 console (作为一名合格的 rails 程序员,我们对此应该很熟悉)

  • core_ext.rb

顾名思义,对 Ruby (这里是 Object 类, String 类)进行直接扩展。使用技术:猴子补丁

  • frameworks.rb

框架的抉择(目前有15个可供选择)!

分为两类,Framework 和 StandaloneFramework (又继承了 Framework )

核心: detect -- 根据上传的源代码检测所使用的 runtime, framework

  • manifest_helper.rb

实现''代码清单''

通过 vmc push 上传代码时在''终端''所显示的提示信息/提问均通过此文件产生,另外事后所看到的 manifest.yml 文件也是它生成的

  • runner.rbset_cmd(namespace, action, args_range=0)

使用手册 usage,这和 vmc -h 或 README.md 中所说的功能一样

set_cmd(namespace, action)  parse_command! , 当你输入 command options 后能进行简单的解析

  • services_helper.rb

之前说过,我们可以将 commands/ 理解为 rails 中的 controllers/ 同样的不难理解: services_helper 也就是 services.rb 的''辅助''文件。它功能主要有:在终端输入 vmc services 时打印 “System Services” 和 “Provisioned Services”

还有就是能过client, 封装了一下 create_service_banner, bind_service_banner, unbind_service_banner, delete_service_banner, random_service_name 方法

commands/ 应该和 controllers/ 一样应该是个''瘦子'',但又有一点区别就是CF没有 views。cli 通过''终端''与用户打交道,所以这里的 commands/ 也要做部分的''显示''工作,所以你在代码里可以经常的看到 ask(), err(), display().

  • tunnel_helper.rb

我们知道通过 vmc 访问CF上的 services, 我们需要有 gem ''caldecott'' 这条''通道''。此文件几乎包含了所有的与之相关的代码!

  • usage.rb

你在终端敲入 vmc 时所显示的 basic_usage, 或者 vmc -h 所显示的帮助信息,都是‘在这里定义的’

  • zip_util.rb

压缩工具

提供对文件/目录的压缩/解压功能。运用于对 logging 的处理,detect framework时也用到,特别是对上传的 app 的压缩

2, vmc 目录

目录 vmc/ 重要就是 client.rb 和 micro 相关代码

子目录 cli/ 重要就是

1. 与vmc命令一一对应的 commands/
2. 支撑起 commands/ 的辅助文件
3. 还有就是 vmc命令 背后看不到的增强功能

micro.rb 

太简单,就不说了

const.rb 一些 module VMC 层面的 const 例如:DEFAULT_TARGET = ''https://api.cloudfoundry.com''

client.rb

最简单的只需要提供 target_url ,你就能创建 VMC::Client.new 的实例

客户端能能够做的事,都在这里''实现''了。前面提到过的 commands/ 直接面向的是用户,只是 views 层。而具体实现由cloudfoundry中的 CC 实现

这个文件就是连接 commands/ 和 CC 的桥梁!

它主要处理 Target info, Apps, Services, Resources, Validation Helpers, User login/password, System administration

看起来有两种格式的处理:JSON和HTML, 但JSON的GET, POST, PUT, DELETE其实只不过是对HTTP的GET, POST, PUT, DELETE做简单的封装而矣。到最后它们都通过一个叫 request 的方法,携带 headers 等信息并且实现无状态请求

对CF有所了解的朋友都应该知道CC才是整个CF的大脑,而我们通过VMC进行的操作实际上到最后都是CC在处理。VMC 与 CC 连接的桥梁:Gem rest_client

mirco

vmrun.rb

从代码可以知道此文件是其重要组成部分

有连接 domain, ip; list, offline? offline! online? run(command, args=nil), running? start ... 对虚拟机的一些基本状态查询/控制。我们对 micro VM 的大多数操作都可以在这里找到,它们中大多数都是''命令行'',可以在操作系统上运行的,从这可以看出 "-gu #{@user} -gp #{@password} #{command}"

base.rb

我们可以将 micro CF 虚拟机布在多种操作系统的物理机上。Base 是其状态的基本信息:offline? or online?

每种操作系统都实现了共同操作,即:adminrun(command); set_nameserver(domain, ip); unset_nameserver(domain, ip)

----

来点简单小结:

vmc 由这两部分组成。

* 你在终端输入 "vmc -h" 所能看到的,或者说你通过 vmc 所能做的事。基本上在 cli/commands/ 里都有与之对应的命令。
而 cli/commands/ 本身并不做什么事,基本都是调用了 vmc/client.rb 下的相对的方法。而 vmc/client 又是通过 rest_client 发送 RESTful 请求到 cloud_controller 最终实现的。

* 上面说的是“所能看到的,或者说你通过 vmc 所能做的事”,再就是"背后的, 看不到的"。caldecott, tunnel 助于与后端服务直接通信, console 助于使用 Rails 中的控制台,runtime/framework 的检测,manifest 代码清单,zip_util 代码的压缩等等。

了解上面的两部分,基本上你对 vmc 就有了比较清楚的认识。在此基础之上,你可以使用CF过程中跟踪(超多的)bug,对 vmc 二次开发,例如: appfog 的 cf 

还有什么?

* 哦,,,还有 vmc micro CF ...

CF代码量庞大,单是 vmc 这条命令的代码就成千。这里所写的,只是作者个人的理解,难免有疏漏和错误。希望读者自己阅读/实践,本文仅起到抛砖引玉的作用

更新:

vmc 目前已经更新,你可以称之为 vmc_ng ,现代码大部分已更改。

client 从 cfoundry gem 来,而cfoundry主要用到了faraday向cloud_controller发送RESTful请求。

语言+构架的检测也从vmc中剥离,放到一个叫 clouseau gem 当中

新增功能主要有:Organizations, Spaces, Routes, Domains

vmc_ng 只提供"vmc -h"所显示的服务,其它的任何功能均不由它提供,相比第一个版本功能更强大。代码结构也分得更细了,不过因为其它附加的功能都移除出去了,所以代码量并没有增加。

其它,还在看代码当中,下次更新。



原文链接: http://blog.csdn.net/restkuan/article/details/8068275

Cloud Foundry应用开发大赛

Cloud Foundry应用开发大赛

近日,OSChina.net联合Cloud Foundry举行应用开发大赛,前10名优秀应用将赢得 Nexus4 手机!
什么是 Cloud Foundry,CF是VMWare开发的一个开源的Paas平台,支持Java,Ruby,NodeJs和PHP等开发语言,目前应该算是最强的开源的Paas平台,国内使用CF的有新浪SAE和盛大云,新浪SAE采用CF提供Ruby Paas平台,盛大云采用CF提供多种语言的Paas平台。PaaS是支撑SaaS实质落地的核心应用环境与工具,对于已经进入SaaS领域的易客CRM来说,CF将大大降低易客CRM提供大规模SaaS服务的门槛,而且还可以提高易客CRM稳定性和扩展性。
CF不多说了,还是谈谈这个应用开发大赛吧。周末在 OSChina.net上看到有位同学讲,想参加CF应用开发大赛,但不知道做什么?当时我就乐了,这好啊,有技术不知道做什么,我来帮你想想做什么?
一般的技术人员对业务都不太懂,只顾一心研究技术,那选择的原则就是参考简单的已经存在的企业应用模仿一个,太复杂的短时间也做不出来。
如果技术人员下决心做一个应用,不妨看看我下面的列表:
1、易客CRM免费版或销售助手,这2个都是易客CRM开发团队的业余时间基于SAE开发的小系统,功能不算复杂。
2、销售易,据说是华为出来的人开发的企业应用,也不复杂
3、企业微博,可以参考Yammer 和明道,注意这个可以只模仿基本的功能,可以不需要那么多功能
4、SugarCRM的开源版,注意只需模仿售前的一些功能,例如日程安排、销售机会、客户、联系人、联系记录、潜在客户等功能,其他的可以忽略
5、基于项目和任务的小系统,类似remember the milk这样的任务管理系统
6、也可以参考37signals上的一些简单应用模仿一个
7、也可以参考国外最近出现的onepagecrm,nimblecrm这些social应用
8、也可以基于国内的weibo平台开发一些小应用

这些只要选择其中一个,如果你做的用户体验非常不错,我想或奖应该是小case,就像我在oschina上讲的,如果做的足够好,你也把做好的应用卖给需要的人或企业,甚至你也可以把应用卖给我,或者转让给我,我们一起把他发扬广大。

做上面的应用可以是一个人,也可以是一个团队,当然想做好肯定没那么容易,肯定需要投入很多精力才能做好,即使这次比赛做不好,也可以以后慢慢做,坚持把它做好,然后你就成功了,你就发财了。

祝你们好运!


cloudfoundry spring security

cloudfoundry spring security

SecurityContextHolder.getContext().getAuthentication().getAuthorities() NullException

在本地没任何问题,放到 cloudfoundry 上面后这里就抛空异常。

导致 elocity 无法正确判断 auth。

并且也无法从 SecurityContextHolder 里面获取到认证信息。

版本:spring 3.0.5

关于部署带有服务的Cloudfoundry应用Spring Boot的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于(六十四) springcloud+springcloud+vue+uniapp分布式微服务电商 商城之Spring Boot Admin的介绍及使用、Cloud Foundry参赛博文——CloudFoundry源代码学习笔记之vmc、Cloud Foundry应用开发大赛、cloudfoundry spring security的相关知识,请在本站寻找。

本文标签: