IDEA 创建 SpringCloud项目-多项目方式

发布于 2019-12-07  5.49k 次阅读


SpringCloud 虽然可以用多模块化的方式来创建,但是,SpirngCloud本身就是为分布式而准备的,如果使用多模块的话,那就是一个项目,偏离了分布式的概念。所以工程上还是常用多项目的方式,这样才可以分开布署各个组件。

一、创建项目

这次不同,我们要创建的是空项目,换句话说,就是一个文件夹,里面在放单独的项目

正常填写,Project name 相当于文件夹名称

完成后是这个样子,是一个空的项目

二、添加模块

如果有自动弹出添加模块的框的话,直接使用就好,如果没有弹出。
File - Project Structure ...

然后选 Modules + New Module

然后又到了这个熟悉的界面,正常选 Spring Initalizr

正常添写 Project Metadata 然后下一步就好

然后同样是选 Spring Cloud Discovery - Eureka Server

回到这个界面后点 OK

然后就能在左侧 Project 框中看到新添加的模块了

但是现在还没完成。打开新建的模块,在 pom.xml 文件上右键选择 Add as Maven Porject 添加这个模块为 Maven 工程

短暂的等待后,可以看到 pom.xml 从原来的 xml 文件图标,变为了 Maven Pom 图标,意味着已经识别为了 Maven 工程了。此时右上角的运行也自动搜索到了 SpringCloud 的启动类

三、配置

在模块下的 resources/ application.properties 文件重命名

修改为 application.yml

然后打开 application.yml 输入

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
  application:
    name: eureka-server

最后找到 Application启动类

添加 @EnableEurekaServer 注解。
修改 启动类,配置 port 为 8761
ScloudMjEurekaServerApplication.class 要记的修改为自己的启动类名

new SpringApplicationBuilder(ScloudMjEurekaServerApplication.class).properties("server.port=" + 8761).run(args);

然启动访问 localhost:8761就可以进入注册中心界面了。

接下来添加新的模块就可以直接在 Project 框 右键 New - Module 就可以正常添加了

这多项目版与多模块版的本质区别在于,虽然多项目版看似分离了个个模块,但本质上还是一个项目,如想要分布部署在生产环境时是必然有一定麻烦的。

而多项目化正好解决了这个问题,这里面每个模块都是一个可单独拿出去独立运行的项目,所以部署在生产环境里时自然要方便的多。