springcloud微服务(一)

短命女 2023-07-21 11:09 83阅读 0赞

springcloud微服务(一)

父依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.xiao</groupId>
  7. <artifactId>springcloud-02</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <modules>
  10. <module>springcloud-api</module>
  11. <module>springcloud-provider-dept-8001</module>
  12. <module>springcloud-consumer-dept-80</module>
  13. </modules>
  14. <!--打包方式 pom-->
  15. <packaging>pom</packaging>
  16. <properties>
  17. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18. <maven.compiler.source>1.8</maven.compiler.source>
  19. <maven.compiler.target>1.8</maven.compiler.target>
  20. <junit.version>4.12</junit.version>
  21. <log4j.version>1.2.17</log4j.version>
  22. <lombok.version>1.18.12</lombok.version>
  23. </properties>
  24. <dependencyManagement>
  25. <dependencies>
  26. <dependency>
  27. <groupId>org.springframework.cloud</groupId>
  28. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  29. <version>0.2.0.RELEASE</version>
  30. <type>pom</type>
  31. <scope>import</scope>
  32. </dependency>
  33. <!--springCloud的依赖-->
  34. <dependency>
  35. <groupId>org.springframework.cloud</groupId>
  36. <artifactId>spring-cloud-dependencies</artifactId>
  37. <version>Greenwich.SR1</version>
  38. <type>pom</type>
  39. <scope>import</scope>
  40. </dependency>
  41. <!--SpringBoot-->
  42. <dependency>
  43. <groupId>org.springframework.boot</groupId>
  44. <artifactId>spring-boot-dependencies</artifactId>
  45. <version>2.1.4.RELEASE</version>
  46. <type>pom</type>
  47. <scope>import</scope>
  48. </dependency>
  49. <!--数据库-->
  50. <dependency>
  51. <groupId>mysql</groupId>
  52. <artifactId>mysql-connector-java</artifactId>
  53. <version>5.1.47</version>
  54. </dependency>
  55. <dependency>
  56. <groupId>com.alibaba</groupId>
  57. <artifactId>druid</artifactId>
  58. <version>1.1.10</version>
  59. </dependency>
  60. <!--SpringBoot 启动器-->
  61. <dependency>
  62. <groupId>org.mybatis.spring.boot</groupId>
  63. <artifactId>mybatis-spring-boot-starter</artifactId>
  64. <version>1.3.2</version>
  65. </dependency>
  66. <!--日志测试~-->
  67. <dependency>
  68. <groupId>ch.qos.logback</groupId>
  69. <artifactId>logback-core</artifactId>
  70. <version>1.2.3</version>
  71. </dependency>
  72. <dependency>
  73. <groupId>junit</groupId>
  74. <artifactId>junit</artifactId>
  75. <version>${
  76. junit.version}</version>
  77. </dependency>
  78. <dependency>
  79. <groupId>log4j</groupId>
  80. <artifactId>log4j</artifactId>
  81. <version>${
  82. log4j.version}</version>
  83. </dependency>
  84. <dependency>
  85. <groupId>org.projectlombok</groupId>
  86. <artifactId>lombok</artifactId>
  87. <version>${
  88. lombok.version}</version>
  89. </dependency>
  90. </dependencies>
  91. </dependencyManagement>
  92. </project>

服务实体类

依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.projectlombok</groupId>
  4. <artifactId>lombok</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>mysql</groupId>
  8. <artifactId>mysql-connector-java</artifactId>
  9. </dependency>
  10. </dependencies>

实体类
这里主键是deptno是,自增,

  1. @Data
  2. @NoArgsConstructor
  3. @Accessors(chain = true) //链式写法
  4. public class Dept implements Serializable {
  5. private Long deptno;
  6. private String dname;
  7. private String db_source;
  8. public Dept(String dname) {
  9. this.dname = dname;
  10. }
  11. }

服务提供者

依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>springcloud-02</artifactId>
  7. <groupId>com.xiao</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>springcloud-provider-dept-8001</artifactId>
  12. <!--服务提供者-->
  13. <dependencies>
  14. <!--拿到实体类,配置springcloud-api-->
  15. <!--我们需要拿到实体类,所以要配置api module-->
  16. <dependency>
  17. <groupId>com.xiao</groupId>
  18. <artifactId>springcloud-api</artifactId>
  19. <version>1.0-SNAPSHOT</version>
  20. </dependency>
  21. <!--junit-->
  22. <dependency>
  23. <groupId>junit</groupId>
  24. <artifactId>junit</artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>mysql</groupId>
  28. <artifactId>mysql-connector-java</artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>com.alibaba</groupId>
  32. <artifactId>druid</artifactId>
  33. <version>1.1.18</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>ch.qos.logback</groupId>
  37. <artifactId>logback-core</artifactId>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.mybatis.spring.boot</groupId>
  41. <artifactId>mybatis-spring-boot-starter</artifactId>
  42. <version>2.1.1</version>
  43. </dependency>
  44. <!--test-->
  45. <dependency>
  46. <groupId>org.springframework.boot</groupId>
  47. <artifactId>spring-boot-test</artifactId>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-starter-web</artifactId>
  52. </dependency>
  53. <!--jetty-->
  54. <dependency>
  55. <groupId>org.springframework.boot</groupId>
  56. <artifactId>spring-boot-starter-jetty</artifactId>
  57. </dependency>
  58. <!--热部署工具-->
  59. <dependency>
  60. <groupId>org.springframework.boot</groupId>
  61. <artifactId>spring-boot-devtools</artifactId>
  62. <version>2.1.8.RELEASE</version>
  63. </dependency>
  64. </dependencies>
  65. </project>

application配置

  1. server:
  2. port: 8001
  3. #mybatis配置
  4. #mybatis配置
  5. mybatis:
  6. type-aliases-package: com.xiao.springcloud.pojo
  7. #config-location: classpath:mybatis/mybatis-config.xml
  8. mapper-locations: classpath:mybatis/mapper/*.xml
  9. #spring的配置
  10. spring:
  11. application:
  12. name: springcloud-provider-dept
  13. datasource:
  14. type: com.alibaba.druid.pool.DruidDataSource
  15. driver-class-name: org.gjt.mm.mysql.Driver
  16. url: jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=utf-8
  17. username: root
  18. password: 123456

dao层

  1. @Mapper //spring
  2. @Repository //json
  3. public interface DeptDao {
  4. public boolean addDept(Dept dept);
  5. public Dept queryById(Long id);
  6. public List<Dept> queryAll();
  7. }

mapper

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.xiao.springcloud.dao.DeptDao">
  5. <insert id="addDept" parameterType="Dept">
  6. insert into dept (dname, db_source)
  7. values (#{
  8. dname},DATABASE())
  9. </insert>
  10. <select id="queryById" resultType="Dept" parameterType="Long">
  11. select * from dept where deptno = #{
  12. deptno};
  13. </select>
  14. <select id="queryAll" resultType="Dept">
  15. select * from dept;
  16. </select>
  17. </mapper>

service

  1. public interface DeptService {
  2. public boolean addDept(Dept dept);
  3. public Dept queryById(Long id);
  4. public List<Dept> queryAll();
  5. }

serviceimpl

  1. @Service
  2. public class DeptServiceImpl implements DeptService {
  3. @Autowired
  4. private DeptDao deptDao;
  5. @Override
  6. public boolean addDept(Dept dept) {
  7. return deptDao.addDept(dept);
  8. }
  9. @Override
  10. public Dept queryById(Long id) {
  11. return deptDao.queryById(id);
  12. }
  13. @Override
  14. public List<Dept> queryAll() {
  15. return deptDao.queryAll();
  16. }
  17. }

controller

  1. package com.xiao.springcloud.controller;
  2. import com.xiao.springcloud.pojo.Dept;
  3. import com.xiao.springcloud.service.DeptService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.PathVariable;
  7. import org.springframework.web.bind.annotation.PostMapping;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import java.util.List;
  10. /**
  11. * @outhor liu
  12. * @dare 2020/4/2 16:22
  13. */
  14. //提供Restful服务!
  15. @RestController
  16. public class DeptController {
  17. @Autowired
  18. private DeptService deptService;
  19. //获取一些配置的信息,得到具体的微服务!
  20. //@Autowired
  21. // private DiscoveryClient client;
  22. @PostMapping("/dept/add")
  23. public boolean addDept(Dept dept) {
  24. return deptService.addDept(dept);
  25. }
  26. @GetMapping("/dept/get/{id}")
  27. public Dept get(@PathVariable("id") Long id) {
  28. Dept dept = deptService.queryById(id);
  29. // if (dept == null) {
  30. // throw new RuntimeException("Fail");
  31. // }
  32. return dept;
  33. }
  34. @GetMapping("/dept/list")
  35. public List<Dept> queryAll() {
  36. return deptService.queryAll();
  37. }
  38. }

主启动

  1. */
  2. @SpringBootApplication
  3. public class DeptProvider {
  4. public static void main(String[] args) {
  5. SpringApplication.run(DeptProvider.class,args);
  6. }
  7. }

服务消费者

依赖

  1. <!--服务消费者-->
  2. <!--只需要导入web和实体类+热部署-->
  3. <dependencies>
  4. <dependency>
  5. <groupId>com.xiao</groupId>
  6. <artifactId>springcloud-api</artifactId>
  7. <version>1.0-SNAPSHOT</version>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-web</artifactId>
  12. </dependency>
  13. <!--热部署工具-->
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-devtools</artifactId>
  17. <version>2.1.8.RELEASE</version>
  18. </dependency>
  19. </dependencies>

application配置

  1. server:
  2. port: 80
  3. #80端口可以直接访问不用输入8080了

config配置

  1. //RestTemplate不能直接添加bean注解,所以我们需要手动创建
  2. @Configuration
  3. public class ConfigBean {
  4. //@Configuration相当于spring中的applicationConfig.xml
  5. //这里是手动把RestTemplate注入到bean中
  6. @Bean
  7. public RestTemplate getRestTemplate(){
  8. return new RestTemplate();
  9. }
  10. }

controller

  1. @RestController
  2. public class DeptConsumerController {
  3. //理解,消费者不应该有service层
  4. //resttemplate 我们可以直接调用,因为已经在config里面注册到bean中了
  5. //resttemplate的参数只有三个(url,实体:map,Class<T> responseType:响应类型)
  6. @Autowired
  7. private RestTemplate restTemplate;
  8. //把服务提供者的地址作为常量,定义出来
  9. private static final String REST_URL_PREFIX = "http://localhost:8001";
  10. //调用服务提供者里面的内容
  11. @RequestMapping("/consumer/dept/add")
  12. public boolean add(Dept dept){
  13. return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add",dept,Boolean.class);
  14. }
  15. @RequestMapping("/consumer/dept/get/{id}")
  16. public Dept get(@PathVariable("id") Long deptno){
  17. return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+deptno,Dept.class);
  18. }
  19. @RequestMapping("/consumer/dept/list")
  20. public List<Dept> list(){
  21. return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list",List.class);
  22. }
  23. }

主启动

  1. @SpringBootApplication
  2. public class DeptConsumer_80 {
  3. public static void main(String[] args) {
  4. SpringApplication.run(DeptConsumer_80.class,args);
  5. }
  6. }

发表评论

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

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

相关阅读