之前項目一直使用dubbo+zookeeper+SSM搭架項目,本次用springCloud來創建一下項目
中文文檔:https://springcloud.cc/
官方文檔:http://projects.spring.io/spring-cloud/#quick-start
本人使用eclipse搭建,本項目同樣使用MAVEN,具體操作步驟如下:
一、創建註冊中心 spring-boot主項目,用於方便管理項目
1.1 新建maven 項目 next
1.2 選擇 create a simple project 然後 next
1.3 填寫相關內容, 注意packaging 選擇pom,然後finish
1.4 修改pom文件
<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.jony.demo</groupId>
<artifactId>spring-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 建議用1.4.0以後的版本之前的可能可能導致部分功能不能使用 包衝突 會出現註冊問題 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
</parent>
<modules>
<module>spring-demo-register</module><!--註冊中心項目 -->
</modules>
<!-- spring-cloud所有項目依賴包 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>spring-root</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
二、創建註冊中心項目
2.1鼠標右鍵主項目,新建maven module
2.2 填寫項目名稱 ,並勾選 create a simple project 然後finish
2.3 修改spring-register pom配置文件內容(添加註冊中心依賴包)
<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>
<parent>
<groupId>com.jony.demo</groupId>
<artifactId>spring-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-register</artifactId>
<!-- 添加註冊中心依賴的包文件 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
2.4 新建註冊中心類以及配置文件
2.4.1 Register.java
package com.jony.register;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication //spring-boot 啓動註解
@EnableEurekaServer // spring-cloud 服務註解
public class Register{
public static void main(String [] args) {
new SpringApplicationBuilder(Register.class).web(true).run(args);
}
}
2.4.2 application.yaml
server:
port: 7890
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
2.5 啓動服務
右鍵 Register.java,然後 run as java application
瀏覽器訪問:http://localhost:7890
註冊中心啓動成功。
三、創建服務到註冊中心
3.1 右鍵spring-root 新建 maven module
3.2 修改pom
<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>
<parent>
<groupId>com.jony.demo</groupId>
<artifactId>spring-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-project-test</artifactId>
<dependencies>
<!-- spring-cloud 客服端 start -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!-- spring-cloud 客服端 end -->
</dependencies>
</project>
3.3 創建服務文件及配置文件
3.3.1 FirstApplication.java
package com.jony.project;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient //Eureka Client
public class FirstApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(FirstApplication.class).web(true).run(args);
}
}
3.3.2 Application.yaml
server:
port: 5000
spring:
application:
name: spring-cloud-portal
#註冊中心指向start
eureka:
instance:
instance-id: spring-cloud-portal
appname: ${spring.application.name}
client:
service-url:
defaultZone: http://127.0.0.1:7890/eureka/
#註冊中心指向end
3.4 右鍵Application.java run as java application 啓動服務
3.5 訪問http://localhost:7890
可以看到服務已註冊成功
注:上面操作過程中,我們將一個服務註冊的註冊中心中,沒有經過任何驗證。這樣任何人都可以註冊到註冊中心了,這個問題如何處理?下面我們在註冊中心中添加密碼就可以實現這一過程了
四、給註冊中心設置密碼、及服務通過密碼註冊服務
4.1 修改註冊中心pom包,添加密碼包支持
<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>
<parent>
<groupId>com.jony.demo</groupId>
<artifactId>spring-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-register</artifactId>
<!-- 添加註冊中心依賴的包文件 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 註冊中心密碼配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
</project>
4.2 給註冊中心添加密碼,修改 spring-register中的application.yaml,新增 security 內容如下:
server:
port: 7890
security:
basic:
enable: true
user:
name: admin
password: abc123456
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
重新啓動 spring-register 文件,然後訪問 http://localhost:7890 提示輸入賬號密碼
註冊中心密碼配置完畢,下一步設置服務端
4.3 修改sping-project-test 中 application.yaml文件 內容爲:
server:
port: 5000
spring:
application:
name: spring-cloud-portal
#註冊中心指向start
eureka:
instance:
instance-id: spring-cloud-portal
appname: ${spring.application.name}
client:
service-url:
defaultZone: http://admin:[email protected]:7890/eureka/
#註冊中心指向end
主要添加倒數第二行,添加了 admin:abc123456@ 用於訪問註冊中心
重啓spring-project-test 中的FirstApplication.java,服務可以正常註冊
到此spring-cloud 註冊服務框架到此完畢