Spring Cloud(新手入门必备)

103 阅读2分钟

Spring Cloud

1.新建工程普通maven 工程

2.删除 SRC

3.配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.zsj</groupId>
    <artifactId>springcloud</artifactId>
    <version>1.0-SNAPSHOT</version>
<!--    打包方式-->
    <packaging>pom</packaging>
​
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <lombok.version>1.16.18</lombok.version>
    </properties>
​
    <dependencyManagement>
        <dependencies>
<!--            springcloud依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
<!--springboot的依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.7.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
<!--            数据库-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
​
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.10</version>
            </dependency><!--            Springboot 启动器-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.1</version>
            </dependency>
<!--                             日志测试                            -->
<!--          junit  -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency><!--            lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
<!--            log4j-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}}</version>
            </dependency>
​
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>
        </dependencies>
    </dependencyManagement></project>

3.新建module(springcloud-api)

4.创建数据库

db01> use db01
db01> insert into dept (dname, db_source) values('开发部',DATABASE())
db01> insert into dept (dname, db_source) values('人事部',DATABASE())
db01> insert into dept (dname, db_source) values('市场部',DATABASE())
db01> insert into dept (dname, db_source) values('财务部',DATABASE())
db01> insert into dept (dname, db_source) values('运维部',DATABASE())

5.配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.zsj</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
​
    <artifactId>springcloud-api</artifactId>
​
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
​
    <dependencies>
        <dependency>
<!--         当前module如果父类配置了版本 子类就不用配置   指向父-->
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies></project>

6.实体类

package com.zsj.springcloud.pojo;
​
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
​
import java.io.Serializable;
​
/**
 * @author zsj
 * @create 2023-02-23 23:09
 */
//Serializable
@Data
@NoArgsConstructor
@Accessors(chain = true)//链式写法  :dept.setname("11").setno(1);
public class Dept implements Serializable {
private  Long deptno;
private  String dname;
//这个数据数存在哪个数据库的字段   微服务,一个服务对应一个数据量  同一个信息可能存在不同的数据库
private  String dbSource;
​
    public Dept(String dname) {
        this.dname = dname;
    }
}

7.创建module(springcloud-provider-dept-8001)

8.配置pom

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.zsj</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
​
    <artifactId>springcloud-provider-dept-8001</artifactId>
​
    <dependencies>
<!--        需要实体类 ,所以配置api 的module-->
        <dependency>
            <groupId>com.zsj</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
<!--test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency><!--        jetty 类似tomcat-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>
<!--        热部署工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties></project>

9.配置接口

package com.zsj.springcloud.dao;
​
import com.zsj.springcloud.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
​
import java.util.List;
​
/**
 * @author zsj
 * @create 2023-02-24 17:08
 */
@Mapper
@Repository
public interface DeptDao {
    public  boolean addDept(Dept dept);
​
    public  Dept queryById(long id);
​
    public List<Dept> queryAll();
​
}

10.[mybatis]配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>
    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>
</configuration>

11.mapper映射

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zsj.springcloud.dao.DeptDao">
        <insert id="addDept" parameterType="Dept">
                insert into dept (dname,db_source)
                values (#{dname},DATABASE())
        </insert>
​
    <select id="queryById" parameterType="Long" resultType="Dept">
        select * from dept where deptno = #{deptno}
    </select>
​
    <select id="queryAll" resultType="Dept">
        select * from dept
    </select>
</mapper>

12创建module(springcloud-consumer-dept-80)

13.导入依赖pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.zsj</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
​
    <artifactId>springcloud-consumer-dept-80</artifactId>
<!--实体类+web-->
    <dependencies>
        <dependency>
            <groupId>com.zsj</groupId>
            <artifactId>springcloud</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>com.zsj</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
​
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties></project>

14.配置ConfigBean

package com.zsj.springcloud.config;
​
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
​
/**
 * @author zsj
 * @create 2023-02-24 19:35
 */
@Configuration
public class ConfigBean {
​
    @Bean
    public RestTemplate getRestTemplate(){
        return  new RestTemplate();
    }
}

15.配置controller

package com.zsj.springcloud.controller;
​
import com.zsj.springcloud.pojo.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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;
​
/**
 * @author zsj
 * @create 2023-02-24 19:25
 */
@RestController
public class DeptConsumerController {
//消费者没有service层//  RestTemplate 供我们直接调用就可以了,注册到Spring中
//    (url ,实体:Map ,Class<T> responseType)
    @Autowired
    private RestTemplate restTemplate;  //提供多种便携访问远程http服务的方法 ,简单的Restful服务模板
​
​
    private  static  final  String REST_URL_PREFIX = "http://localhost:8001";
​
​
    @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/add")
    public boolean add(Dept dept){
        return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add",dept,Boolean.class);
    }
​
​
    @RequestMapping("/consumer/dept/list")
    public List<Dept> list(){
        return  restTemplate.getForObject(REST_URL_PREFIX+"/dept/list",List.class);
    }
​
}

16.运行

package com.zsj.springcloud;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
​
/**
 * @author zsj
 * @create 2023-02-24 20:23
 */
@SpringBootApplication
public class Deptconsumer_80 {
    public static void main(String[] args) {
        SpringApplication.run(Deptconsumer_80.class,args);
    }
}