springcloud微服务之间相互调用实战

深碍√TFBOYSˉ_ 2023-06-10 13:21 167阅读 0赞

任务一实现:
使用脚手架生成deepexi-spring-cloud(服务消费者)、deepeximessage-spring-cloud(服务提供者)
registerCenter(注册中心,这个没用脚手架生成)

一 服务消费者,实现用户管理的CRUD,然后在添加用户时调用deepeximessage-spring-cloud发送一条欢迎信息。脚手架好像没有发现有生成快速生成xml、mapper、entity的方法,
所以使用mybatis generator根据数据库表快速生成相应文件,需要根据实际情况修改内容.

  1. 表结构:create table user(
  2. uid int primary key auto_increment,
  3. uname varchar(200) comment '姓名',
  4. pwd varchar(50) comment '密码',
  5. addr varchar(100) comment '详细地址'
  6. )

1 com.deepexi.domain.entity包下的User实体类:

  1. package com.deepexi.domain.entity;
  2. import lombok.Data;
  3. @Data
  4. public class User {
  5. private Integer uid;
  6. private String uname;
  7. private String pwd;
  8. private String addr;
  9. }

2 com.deepexi.mapper包下的mapper接口:

  1. package com.deepexi.mapper;
  2. import com.deepexi.domain.entity.User;
  3. import com.deepexi.domain.query.UserQuery;
  4. import org.apache.ibatis.annotations.Mapper;
  5. import org.apache.ibatis.annotations.Param;
  6. import java.util.List;
  7. @Mapper
  8. public interface UserMapper {
  9. /**
  10. * @description :通过id删除用户
  11. * @param uid :
  12. * @return :int
  13. */
  14. int deleteByPrimaryKey(@Param(value="uid") String uid);
  15. /**
  16. * @description :插入用户
  17. * @param user :
  18. * @return :int
  19. */
  20. int insert(User user);
  21. /**
  22. * @description :条件查询
  23. * @param userQuery :
  24. * @return :java.util.List<com.deepexi.domain.entity.User>
  25. */
  26. List<User> selectByUser(UserQuery userQuery);
  27. /**
  28. * @description :修改用户
  29. * @param user :
  30. * @return :int
  31. */
  32. int update(User user);
  33. }

3.下面是com.deepexi.service业务层接口UserService(对于里面的UserQuery类是用于查询的实体类对象,继承PaginationRequest,添加分页参数)

  1. package com.deepexi.service;
  2. import com.deepexi.domain.entity.User;
  3. import com.deepexi.domain.query.UserQuery;
  4. import java.util.List;
  5. public interface UserService {
  6. int deleteByPrimaryKey(String uid);
  7. int insert(User user);
  8. List<User> selectUser(UserQuery userQuery);
  9. int update(User user);
  10. }

4 com.deepexi.domain.query下的UserQuery实体类:

  1. package com.deepexi.domain.query;
  2. import lombok.Data;
  3. @Data
  4. public class UserQuery extends PaginationRequest {
  5. private String uname;
  6. private String pwd;
  7. private String addr;
  8. }

5 接着是com.deepexi.service.impl业务层接口UserService的实现类UserServiceImpl:

  1. package com.deepexi.service.impl;
  2. import com.deepexi.domain.entity.User;
  3. import com.deepexi.domain.query.UserQuery;
  4. import com.deepexi.mapper.UserMapper;
  5. import com.deepexi.service.UserService;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. import java.util.List;
  9. @Service
  10. public class UserServiceImpl implements UserService {
  11. @Autowired(required = false)
  12. private UserMapper userMapper;
  13. @Override
  14. public int deleteByPrimaryKey(String uid) {
  15. return userMapper.deleteByPrimaryKey(uid);
  16. }
  17. @Override
  18. public int insert(User user) {
  19. return userMapper.insert(user);
  20. }
  21. @Override
  22. public List<User> selectUser(UserQuery userQuery) {
  23. return userMapper.selectByUser(userQuery);
  24. }
  25. @Override
  26. public int update(User user) {
  27. return userMapper.update(user);
  28. }
  29. }

6下面是控制层代码com.deepexi.controller下的UserController:(类中使用了ResultVo返回请求内容,内容使用StatusEnum填充):

  1. package com.deepexi.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.deepexi.domain.entity.User;
  4. import com.deepexi.domain.query.UserQuery;
  5. import com.deepexi.domain.vo.ResultVo;
  6. import com.deepexi.enums.StatusEnum;
  7. import com.deepexi.remote.MessageRemote;
  8. import com.deepexi.service.UserService;
  9. import io.swagger.annotations.Api;
  10. import io.swagger.annotations.ApiOperation;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.http.ResponseEntity;
  15. import org.springframework.web.bind.annotation.*;
  16. import java.util.List;
  17. @RestController
  18. @Api(value= "用户管理")
  19. public class UserController {
  20. private final Logger log= LoggerFactory.getLogger(UserController.class);
  21. @Autowired
  22. private UserService userService;
  23. @Autowired
  24. MessageRemote messageRemote;
  25. @PostMapping(value= "/login")
  26. @ApiOperation(value= "用户登录",notes= "条件查询是否存在用户")
  27. public ResponseEntity login(@RequestBody UserQuery userQuery){
  28. List<User> list= null;
  29. try {
  30. log.info("request to login: {}",JSONObject.toJSON(userQuery));
  31. userQuery.setIndex(userQuery.getOffset());
  32. userQuery.setSize(userQuery.getLimit());
  33. list = userService.selectUser(userQuery);
  34. } catch (Exception e) {
  35. log.info("用户查询失败");
  36. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.FAIL));
  37. }
  38. return ResponseEntity.ok().body(list);
  39. }
  40. @PostMapping(value= "/updateUser")
  41. @ApiOperation(value= "修改用户",notes ="修改用户信息,包括修改密码")
  42. public ResponseEntity updateUser(@RequestBody User user){
  43. try {
  44. log.info("request to update user info:{}", JSONObject.toJSON(user));
  45. userService.update(user);
  46. } catch (Exception e) {
  47. log.info("修改用户信息错误");
  48. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.UPDATEFAIL));
  49. }
  50. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.SUCCESS));
  51. }
  52. @PostMapping(value="/addUser")
  53. @ApiOperation(value="添加用户",notes = "添加用户信息")
  54. public ResponseEntity addUser(@RequestBody User user){
  55. //调用远程服务,返回欢迎信息
  56. String msg=messageRemote.registerInfo();
  57. try {
  58. log.info("request to add user info: {}", JSONObject.toJSON(user));
  59. userService.insert(user);
  60. } catch (Exception e) {
  61. log.info("添加用户失败");
  62. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.ADDFAIL));
  63. }
  64. return ResponseEntity.ok().body(msg);
  65. }
  66. @PostMapping(value="/deleteUser")
  67. @ApiOperation(value="删除用户",notes = "根据uid删除用户")
  68. public ResponseEntity deleteUser(@RequestParam("uid") String uid){
  69. try {
  70. log.info("request to delete user info:{}", uid);
  71. userService.deleteByPrimaryKey(uid);
  72. } catch (Exception e) {
  73. log.info("删除用户失败");
  74. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.DALETEFAIL));
  75. }
  76. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.SUCCESS));
  77. }
  78. }

7 ResultVo代码如下:用于控制层返回对象

  1. package com.deepexi.domain.vo;
  2. import com.deepexi.enums.StatusEnum;
  3. import lombok.Data;
  4. @Data
  5. public class ResultVo{
  6. private String code;
  7. private String msg;
  8. public static ResultVo getInstance(StatusEnum statusEnum){
  9. ResultVo resultVo=new ResultVo();
  10. resultVo.setCode(statusEnum.getCode());
  11. resultVo.setMsg(statusEnum.getMsg());
  12. return resultVo;
  13. }
  14. }

8 StatusEnum代码如下:定义返回状态内容

  1. package com.deepexi.enums;
  2. public enum StatusEnum {
  3. SUCCESS("200","请求成功"),
  4. FAIL("400","请求失败"),
  5. UPDATEFAIL("400","修改失败"),
  6. DALETEFAIL("400","删除失败"),
  7. ADDFAIL("400","添加失败");
  8. private String code;
  9. private String msg;
  10. StatusEnum(String code, String msg) {
  11. this.code = code;
  12. this.msg = msg;
  13. }
  14. public String getCode() {
  15. return code;
  16. }
  17. public void setCode(String code) {
  18. this.code = code;
  19. }
  20. public String getMsg() {
  21. return msg;
  22. }
  23. public void setMsg(String msg) {
  24. this.msg = msg;
  25. }
  26. }

9 远程服务调用:在com.deepexi.remote下创建MessageRemote:

  1. package com.deepexi.remote;
  2. import org.springframework.cloud.openfeign.FeignClient;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. @FeignClient(name="deepeximessage-spring-cloud")
  6. public interface MessageRemote {
  7. @RequestMapping(value="/alertInfo",method = RequestMethod.POST)
  8. String registerInfo();
  9. }

10 启动类:添加@EnableDiscoveryClient服务注册,@EnableFeignClients开启feign调用:

  1. package com.deepexi;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  5. import org.springframework.cloud.openfeign.EnableFeignClients;
  6. @SpringBootApplication
  7. @EnableDiscoveryClient
  8. @EnableFeignClients
  9. public class StartupApplication {
  10. public static void main(String[] args) {
  11. SpringApplication.run(StartupApplication.class, args);
  12. }
  13. }

11 配置文件: 指定应用名称,注册中心地址

  1. spring:
  2. application:
  3. name: deepexi-spring-cloud
  4. profiles:
  5. active: local
  6. datasource:
  7. driver-class-name: com.mysql.jdbc.Driver
  8. druid:
  9. web-stat-filter:
  10. enabled: true
  11. stat-view-servlet:
  12. enabled: true
  13. login-username: root
  14. login-password: root
  15. thymeleaf:
  16. cache: false
  17. redis:
  18. timeout: 1000
  19. swagger:
  20. base-package: com.deepexi.controller
  21. info:
  22. title: deepexi-spring-cloud
  23. server:
  24. error:
  25. include-stacktrace: always
  26. include-exception: true
  27. logging:
  28. file: 'logs/${spring.application.name}.log'
  29. management:
  30. server:
  31. port: 8081
  32. eureka:
  33. client:
  34. service-url:
  35. defaultZone: http://127.0.0.1:8761/eureka/
  36. mybatis:
  37. mapper-locations: 'classpath:mapper/*.xml'
  38. feign:
  39. hystrix:
  40. enabled: true
  41. shiro:
  42. web:
  43. mode: stateless
  44. filter-chain-definition:
  45. authc:
  46. - /v1/**
  47. anon:
  48. - /**
  49. spring:
  50. datasource:
  51. driver-class-name: com.mysql.jdbc.Driver
  52. username: root
  53. password: root
  54. url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
  55. logging:
  56. level:
  57. com.deepexi.mapper: debug
  58. server:
  59. port: 8060

12 映射文件resoures/mapper下的UserMapper.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.deepexi.mapper.UserMapper">
  4. <resultMap id="BaseResultMap" type="com.deepexi.domain.entity.User">
  5. <id column="uid" jdbcType="INTEGER" property="uid" />
  6. <result column="uname" jdbcType="VARCHAR" property="uname" />
  7. <result column="pwd" jdbcType="VARCHAR" property="pwd" />
  8. <result column="addr" jdbcType="VARCHAR" property="addr" />
  9. </resultMap>
  10. <sql id="Base_Column_List">
  11. uid, uname, pwd, addr
  12. </sql>
  13. <!-- 分页条件的拼接 -->
  14. <sql id="pageSql">
  15. <if test="index != null and size != null">
  16. limit ${index},${size}
  17. </if>
  18. </sql>
  19. <select id="selectByUser" parameterType="com.deepexi.domain.entity.User" resultMap="BaseResultMap">
  20. select
  21. <include refid="Base_Column_List" />
  22. from user
  23. <where>
  24. <if test=" uname != null and uname != '' ">
  25. and uname=#{uname,jdbcType=VARCHAR}
  26. </if>
  27. <if test=" pwd != null and pwd != '' ">
  28. and pwd=#{pwd,jdbcType=VARCHAR}
  29. </if>
  30. <if test=" addr != null and addr != '' ">
  31. and addr=#{addr,jdbcType=VARCHAR}
  32. </if>
  33. </where>
  34. <include refid="pageSql"/>
  35. </select>
  36. <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
  37. delete from user
  38. where uid = #{uid,jdbcType=VARCHAR}
  39. </delete>
  40. <insert id="insert" parameterType="com.deepexi.domain.entity.User">
  41. insert into user (uid, uname, pwd,
  42. addr)
  43. values (#{uid,jdbcType=INTEGER}, #{uname,jdbcType=VARCHAR}, #{pwd,jdbcType=VARCHAR},
  44. #{addr,jdbcType=VARCHAR})
  45. </insert>
  46. <update id="update" parameterType="com.deepexi.domain.entity.User">
  47. update user
  48. <set>
  49. <if test=" uname != null and uname != '' ">
  50. uname = #{uname,jdbcType=VARCHAR},
  51. </if>
  52. <if test=" pwd != null and pwd != '' ">
  53. pwd = #{pwd,jdbcType=VARCHAR},
  54. </if>
  55. <if test=" addr != null and addr != '' ">
  56. addr = #{addr,jdbcType=VARCHAR},
  57. </if>
  58. </set>
  59. <if test=" uid != null and uid !='' ">
  60. where uid=#{uid,jdbcType=VARCHAR}
  61. </if>
  62. </update>
  63. </mapper>

13创建完后项目结构如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjkzODI4_size_16_color_FFFFFF_t_70

14 开启swagger界面测试接口:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjkzODI4_size_16_color_FFFFFF_t_70 1

15 添加用户时调用Message服务的接口:(返回的内容是Message应用服务提供内容)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjkzODI4_size_16_color_FFFFFF_t_70 2

二 服务提供者deepeximessage-spring-cloud
1 表结构:

  1. create table message(
  2. id int primary key auto_increment,
  3. msg varchar(100)
  4. )

2 实体类com.deepexi.domain.entity下Message:

  1. package com.deepexi.domain.entity;
  2. import lombok.Data;
  3. @Data
  4. public class Message {
  5. private Integer id;
  6. private String msg;
  7. }

3 Mapper层接口MessageMapper:

  1. package com.deepexi.mapper;
  2. import com.deepexi.domain.entity.Message;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import org.apache.ibatis.annotations.Param;
  5. import java.util.List;
  6. @Mapper
  7. public interface MessageMapper {
  8. int deleteByPrimaryKey(@Param(value="id") String id);
  9. int insert(Message message);
  10. List<Message> selectByMessage(Message message);
  11. int update(Message message);
  12. }

4 业务层接口MessageService:

  1. package com.deepexi.service;
  2. import com.deepexi.domain.entity.Message;
  3. import org.apache.ibatis.annotations.Param;
  4. import java.util.List;
  5. public interface MessageService {
  6. int deleteByPrimaryKey( String id);
  7. int insert(Message message);
  8. List<Message> selectByMessage(Message message);
  9. int update(Message message);
  10. }

5 业务层实现MessageServiceImpl:

  1. package com.deepexi.service.impl;
  2. import com.deepexi.domain.entity.Message;
  3. import com.deepexi.mapper.MessageMapper;
  4. import com.deepexi.service.MessageService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import java.util.List;
  8. @Service
  9. public class MessageServiceImpl implements MessageService {
  10. @Autowired(required = false)
  11. MessageMapper messageMapper;
  12. @Override
  13. public int deleteByPrimaryKey(String id) {
  14. return messageMapper.deleteByPrimaryKey(id);
  15. }
  16. @Override
  17. public int insert(Message message) {
  18. return messageMapper.insert(message);
  19. }
  20. @Override
  21. public List<Message> selectByMessage(Message message) {
  22. return messageMapper.selectByMessage(message);
  23. }
  24. @Override
  25. public int update(Message message) {
  26. return messageMapper.update(message);
  27. }
  28. }

6 控制层代码MessageController:

  1. package com.deepexi.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.deepexi.domain.entity.Message;
  4. import com.deepexi.domain.vo.ResultVo;
  5. import com.deepexi.enums.StatusEnum;
  6. import com.deepexi.service.MessageService;
  7. import io.swagger.annotations.Api;
  8. import io.swagger.annotations.ApiOperation;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.http.ResponseEntity;
  13. import org.springframework.web.bind.annotation.PostMapping;
  14. import org.springframework.web.bind.annotation.RequestBody;
  15. import org.springframework.web.bind.annotation.RequestParam;
  16. import org.springframework.web.bind.annotation.RestController;
  17. import java.util.List;
  18. @RestController
  19. @Api(value="信息管理")
  20. public class MessageController {
  21. private final Logger log= LoggerFactory.getLogger(MessageController.class);
  22. @Autowired
  23. private MessageService messageService;
  24. @PostMapping(value="/addMessage")
  25. @ApiOperation(value="信息添加")
  26. public ResponseEntity add(@RequestBody Message message){
  27. try {
  28. log.info("request add message: {}", JSONObject.toJSON(message));
  29. messageService.insert(message);
  30. } catch (Exception e) {
  31. log.info("添加信息失败");
  32. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.ADDFAIL));
  33. }
  34. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.SUCCESS));
  35. }
  36. @PostMapping(value="/updateMessage")
  37. @ApiOperation(value="修改信息")
  38. public ResponseEntity updateMessage(@RequestBody Message message){
  39. try {
  40. log.info("request update message: {}",JSONObject.toJSON(message));
  41. messageService.update(message);
  42. } catch (Exception e) {
  43. log.info("修改信息失败");
  44. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.UPDATEFAIL));
  45. }
  46. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.SUCCESS));
  47. }
  48. @PostMapping(value="/selectMessage")
  49. @ApiOperation(value="查询信息")
  50. public ResponseEntity selectMessage(@RequestBody Message message){
  51. List<Message> list=null;
  52. try {
  53. log.info("request select message: {}",JSONObject.toJSON(message));
  54. list=messageService.selectByMessage(message);
  55. } catch (Exception e) {
  56. log.info("查询获取信息失败");
  57. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.FAIL));
  58. }
  59. return ResponseEntity.ok().body(list);
  60. }
  61. @PostMapping(value="/deleteMessage")
  62. @ApiOperation(value="删除信息",notes = "根据id删除信息")
  63. public ResponseEntity deleteMessage(@RequestParam(value="id") String id){
  64. try {
  65. log.info("request delete message: {}",id);
  66. messageService.deleteByPrimaryKey(id);
  67. } catch (Exception e) {
  68. log.info("删除信息失败");
  69. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.DALETEFAIL));
  70. }
  71. return ResponseEntity.ok().body(ResultVo.getInstance(StatusEnum.SUCCESS));
  72. }
  73. @PostMapping(value="/alertInfo")
  74. @ApiOperation(value="返回一个提示信息",notes = "用于其他服务调用")
  75. public ResponseEntity registerInfo(){
  76. String msg=null;
  77. //返回所有消息列表的第一条内容返回给其他服务
  78. List<Message> list=messageService.selectByMessage(null);
  79. if(list.size()>0){
  80. for (Message item:list){
  81. msg=item.getMsg();
  82. }
  83. }
  84. return ResponseEntity.ok().body(msg);
  85. }
  86. }

7 配置文件、启动类与上面服务相似,不同是应用名称、端口号配置

8 配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.deepexi.mapper.MessageMapper">
  4. <resultMap id="BaseResultMap" type="com.deepexi.domain.entity.Message">
  5. <id column="id" jdbcType="INTEGER" property="id" />
  6. <result column="msg" jdbcType="VARCHAR" property="msg" />
  7. </resultMap>
  8. <sql id="Base_Column_List">
  9. id, msg
  10. </sql>
  11. <select id="selectByMessage" parameterType="com.deepexi.domain.entity.Message" resultMap="BaseResultMap">
  12. select
  13. <include refid="Base_Column_List" />
  14. from message
  15. <where>
  16. <if test=" id!=null">
  17. and id= #{id,jdbcType=VARCHAR} order by id desc
  18. </if>
  19. </where>
  20. </select>
  21. <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
  22. delete from message
  23. where id = #{id,jdbcType=VARCHAR}
  24. </delete>
  25. <insert id="insert" parameterType="com.deepexi.domain.entity.Message">
  26. insert into message (id, msg)
  27. values (#{id,jdbcType=INTEGER}, #{msg,jdbcType=VARCHAR})
  28. </insert>
  29. <update id="update" parameterType="com.deepexi.domain.entity.Message">
  30. update message
  31. <set>
  32. <if test="msg != null">
  33. msg=#{msg,jdbcType=VARCHAR},
  34. </if>
  35. </set>
  36. <if test="id != null ">
  37. where id = #{id,jdbcType=VARCHAR}
  38. </if>
  39. </update>
  40. </mapper>

9 开启wagger2界面:watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjkzODI4_size_16_color_FFFFFF_t_70 3

10 测试修改信息接口:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjkzODI4_size_16_color_FFFFFF_t_70 4

11 测试返回提示信息接口,给消费者调用:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjkzODI4_size_16_color_FFFFFF_t_70 5

三 注册中心
注册中心没有用脚手架生成,采用简单springboot项目导入依赖jar包,步骤如下:
1 pom文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.1.6.RELEASE</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>demo</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>demo</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.cloud</groupId>
  26. <artifactId>spring-cloud-starter</artifactId>
  27. <version>2.0.2.RELEASE</version>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.cloud</groupId>
  31. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  32. <version>2.0.2.RELEASE</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.projectlombok</groupId>
  36. <artifactId>lombok</artifactId>
  37. <optional>true</optional>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-test</artifactId>
  42. <scope>test</scope>
  43. </dependency>
  44. </dependencies>
  45. <build>
  46. <plugins>
  47. <plugin>
  48. <groupId>org.springframework.boot</groupId>
  49. <artifactId>spring-boot-maven-plugin</artifactId>
  50. </plugin>
  51. </plugins>
  52. </build>
  53. </project>

2 application.properties配置文件:

  1. spring.application.name=springcloud-register-center
  2. server.port=8761
  3. eureka.client.register-with-eureka=false
  4. eureka.client.fetch-registry=false
  5. eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/

3 启动类:

  1. package com.example.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. @SpringBootApplication
  6. @EnableEurekaServer
  7. public class DemoApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(DemoApplication.class, args);
  10. }
  11. }

4 启动后,分别启动上面两个应用,结果如下:(有两个实例)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjkzODI4_size_16_color_FFFFFF_t_70 6

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjkzODI4_size_16_color_FFFFFF_t_70 7

发表评论

表情:
评论列表 (有 0 条评论,167人围观)

还没有评论,来说两句吧...

相关阅读