groupId:pers.xzp.springCloud
artifactId:springCloud
父项目中仅仅需要一个pom文件,用于管理模块的依赖统一、继承等
编辑pom文件
首先项目包结构为:pom
添加依赖声明:依赖声明,不会引入依赖,只有当模块引入依赖坐标的时候才会引入响应依赖
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <!--springcloud版本--> <spring-cloud.version>Finchley.SR2</spring-cloud.version> <springboot.version>2.0.6.RELEASE</springboot.version> </properties> <!-- dependencyManagement:帮助我们去管理坐标的版本:仅仅声明,不引入依赖--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${springboot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--springboot支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--Devtools--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖boot项目的项目如果想要使用devtools,需要重新引入 --> <!--<optional>true</optional>--> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <!-- 如果没有该生效标志,热部署的devtools不生效 --> </configuration> </plugin> </plugins> </build>
创建Eureka注册中心模块
Eureka服务端作为服务注册中心
模块名:eureka-registryCenter,端口:7001
引入Eureka服务端依赖
<dependencies> <!--Eureka服务端支持--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
编辑核心配置文件
server
创建项目引导类
作为Eureka服务端的引导类,需要被@EnableEurekaServer标注
//@EnableEurekaServer:标注的类表示Eureka服务端,作为注册中心 @EnableEurekaServer @SpringBootApplication public class RegistryCenter_7001 { public static void main(String[] args) { SpringApplication.run(RegistryCenter_7001.class); } }
创建Eureka客户端:服务提供者
模块名字:provider-payment8001 端口号:8001
引入Eureka客户端依赖
<!--eureka客户端支持 我们去写支付功能 服务--> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies>
编辑核心配置文件
server
编码
实体类
@Data public class User implements Serializable { private int id; private String name; @DateTimeFormat(pattern = "yyyy-MM-dd") private Date birthday; public User(int id, String name, Date birthday) { this.id = id; this.name = name; this.birthday = birthday; } public User() { } }
Controller控制器
//@Slf4j:使用log4j日志需要,默认生成log实例 @Slf4j @Controller public class UserController { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @GetMapping("/getalluser") @ResponseBody public String getAllUser(){ User user = null; try { user = new User(1,"张三",sdf.parse("2020-10-10")); } catch (ParseException e) { log.debug("日期类型转换失败"); } return user.toString(); } }
测试
有服务端和客户端,类似WebSocket编程,需要我们先启动服务端;
因此,我们需要先启动Eureka注册中心eureka-registryCenter
,然后在启动Eureka客户端provider-payment8001
浏览器输入:http://localhost:7001,会进入了Eureka服务注册中心
输入:http://localhost:8001/getalluser,会访问到服务提供者的数据
小结
- 注册中心可以类比tomcat管理javaweb应用
- Eureka有服务端和客户端概念,可以参考WebSocket编程