之前项目一直使用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 注册服务框架到此完毕