栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

二、SpringCloud学习 -- 环境搭建

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二、SpringCloud学习 -- 环境搭建

Rest 学习环境搭建

SpringCloud 版本和 SpringBoot版本的选择:

1、父项目搭建

新建Maven项目作为父项目,Packageing是pom模式

导入依赖:



    4.0.0

    org.example
    SpringCloud
    1.0-SNAPSHOT

    
    pom

    
        Hoxton.SR12
        2.3.12.RELEASE
        8.0.27
        1.2.8
        2.2.0
        4.12
        2.17.1
    

    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud-version}
                pom
                import
            
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot-version}
                pom
                import
            
            
            
            
                mysql
                mysql-connector-java
                ${mysql-connector-java-vesion}
            
            
            
            
                com.alibaba
                druid
                ${druid-version}
            
            
            
            
                org.mybatis.spring.boot
                mybatis-spring-boot-starter
                ${mybatis-starter-version}
            
            
            
            
                junit
                junit
                ${junit-version}
                test
            
            
            
            
                org.apache.logging.log4j
                log4j-core
                ${log4j-core-sersion}
            
        
    

2、实体类模块搭建

新建子模块 springcloud-api :

依赖:



    
        SpringCloud
        org.example
        1.0-SNAPSHOT
    
    4.0.0

    springcloud-api

    
    
        
            org.projectlombok
            lombok
        
    

IDEA 连接数据库: jdbc:mysql://localhost:3306?serverTimezone=Asia/Shanghai

​ 创建数据库:

新建表:

CREATE TABLE `dept`  (
  `dept_no` bigint(20) NOT NULL AUTO_INCREMENT,
  `dept_name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `db_source` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`dept_no`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO dept(dept_name, db_source) VALUES ("开发部", DATAbase());
INSERT INTO dept(dept_name, db_source) VALUES ("人事部", DATAbase());
INSERT INTO dept(dept_name, db_source) VALUES ("财务部", DATAbase());
INSERT INTO dept(dept_name, db_source) VALUES ("市场部", DATAbase());
INSERT INTO dept(dept_name, db_source) VALUES ("运维部", DATAbase());

数据库写完后写实体类:

package com.example.springcloud.pojo;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;


@Data
@NoArgsConstructor
@Accessors(chain = true)  // 链式写法
public class Dept implements Serializable {

    private Long deptNo;
    private String deptName;
    // 看一下这个数据是存在哪个数据库中的字段
    // 微服务,一个服务对应一个数据库,同一个信息可能存在不同的数据库中
    private String dbSource;

    public Dept(String deptName) {
        this.deptName = deptName;
    }
}
3、服务提供者模块搭建

新建子模块 springcloud-provider-dept-8001



    
        SpringCloud
        com.example
        1.0-SNAPSHOT
    
    4.0.0

    springcloud-provider-dept-8001

    
        
        
            com.example
            springcloud-api
            1.0-SNAPSHOT
        
        
        
            junit
            junit
            test
        
        
            mysql
            mysql-connector-java
        
        
            com.alibaba
            druid
        
        
            ch.qos.logback
            logback-core
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
        
        
        
            org.springframework.boot
            spring-boot-starter-test
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.boot
            spring-boot-starter-jetty
        
        
        
            org.springframework.boot
            spring-boot-devtools
        
    

配置文件

application.yml 配置文件:

server:
  port: 8001
# myBaits 配置
mybatis:
  type-aliases-package: com.example.springcloud.pojo
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
# spring 配置
spring:
  application:
    name: spring-provider-dept
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/workers?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password:

mybatis-config.xml 配置文件:





    
        
        
        
        
    

Dao层

DeptDao

package com.example.springcloud.dao;

import com.example.springcloud.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;


@Mapper
@Repository
public interface DeptDao {
    boolean addDept(Dept dept);

    Dept queryDept(Long id);

    List queryAllDept();
}

deptMapper.xml





    
        insert into db_01.dept(dept_name, db_source) VALUES (#{deptName}, DATAbase())
    

    
        select * from db_01.dept where dept_no = #{id}
    

    

Service层
package com.example.springcloud.service;

import com.example.springcloud.pojo.Dept;

import java.util.List;


public interface DeptService {
    boolean addDept(Dept dept);

    Dept queryDept(Long id);

    List queryAllDept();
}
package com.example.springcloud.service.impl;

import com.example.springcloud.dao.DeptDao;
import com.example.springcloud.pojo.Dept;
import com.example.springcloud.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class DeptServiceImpl implements DeptService {

    @Autowired
    private DeptDao deptDao;

    public boolean addDept(Dept dept) {
        return deptDao.addDept(dept);
    }

    public Dept queryDept(Long id) {
        return deptDao.queryDept(id);
    }

    public List queryAllDept() {
        return deptDao.queryAllDept();
    }
}
Controller层
package com.example.springcloud.controller;

import com.example.springcloud.pojo.Dept;
import com.example.springcloud.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController
public class DeptController {

    @Autowired
    private DeptService deptService;

    @PostMapping("/dept/add")
    public boolean addDept(@RequestBody Dept dept){
        return deptService.addDept(dept);
    }

    @GetMapping("/dept/get/{id}")
    public Dept get(@PathVariable("id") Long id){
        return deptService.queryDept(id);
    }

    @GetMapping("/dept/list")
    public List queryAll(){
        return deptService.queryAllDept();
    }

}
主启动器
package com.example.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class DeptProvider_8001 {
    public static void main(String[] args) {
        SpringApplication.run(DeptProvider_8001.class, args);
    }
}

启动访问测试接口。

4、服务消费者模块搭建

引入依赖pom.xml;



    
        SpringCloud
        com.example
        1.0-SNAPSHOT
    
    4.0.0

    springcloud-consumer-dept-80

    
    
        
            com.example
            springcloud-api
            1.0-SNAPSHOT
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.boot
            spring-boot-devtools
        
    

配置文件
server:
  port: 80
controller层
package com.example.springcloud.controller;

import com.example.springcloud.pojo.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.List;


@RestController
public class DeptConsumerController {
    // 消费者,不应该有service层
    // RestTemplate , 有对应的请求方法,供我们直接调用,要注册到 Spring 中

    private static final String REST_URL_PREFIX = "http://localhost:8001";

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/consumer/dept/add")
    public boolean add(Dept dept){
        return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add", dept, Boolean.class);
    }

    @RequestMapping("/consumer/dept/get/{id}")
    public Dept get(@PathVariable("id")Long id){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/" + id, Dept.class);
    }

    @RequestMapping("/consumer/dept/list")
    public List list(){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list", List.class);
    }
}
配置 RestTemplate
package com.example.springcloud.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;


@Configuration
public class RestConfig {
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

启动项目并测试接口。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750024.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号