程序员的资源宝库

网站首页 > gitee 正文

创建SpringCloud项目

sanyeah 2024-04-02 19:56:32 gitee 6 ℃ 0 评论

SpringCloud简介
SpringCloud是目前国内使用最广泛的微服务框架。
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

SpringCloud常用组件
1.服务注册发现:Eureka,Nacos,Consul
2.服务远程调用:OpenFeign,Dubbo
3.服务链路追踪:Zipkin,Sleuth
4.统一配置管理:SrpingCloudConfig,Nacos
5.统一网关路由:SpringCloudGateway,Zuul
6.流量控制,降级,保护:Hystix,Sentinel

SpringCloud底层是依赖于SpringBoot,且有版本的兼容关系。如下图:

创建一个SpringCloud项目
1.创建一个Maven项目,CloudDemo作为父级项目。继续创建两个Maven项目,UserDemo和OrderDemo作为子项目。如下图:

2.在CloudDemo中添加进行依赖配置

点击查看代码
<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <lombok.version>1.18.26</lombok.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--springCloud的依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR10</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springBoot依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.12.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springBoot启动器-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.4</version>
            </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.2.13-SNSAPSHOT</version>
            </dependency>
            <!--其他常用依赖-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
3.配置UserDemo和OrderDemo的依赖文件 UserDemo
点击查看代码
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
    </dependencies>
OrderDemo
点击查看代码
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.cloudDemo</groupId>
            <artifactId>UserDemo</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
    </dependencies>

4.依赖配置完成后创建项目结构,以OrderDemo为例:

5.配置yml文件

6.创建两个数据库,tb_user和tb_order。

7.该Demo中使用的是MyBatisPlus框架,需要进行实体类与表之间的映射

点击查看代码
@Data
@TableName(value = "tb_order")
public class Order {
    private Long id;
    private Long userId;
    private String name;
    private Long price;
    private Integer num;
    @TableField(exist = false)
    private User user;
}

8.在OrderDemo的启动类中添加如下代码,注册一个RestTemplate实例可实现远程调用

点击查看代码
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

9.编写Controller层代码

点击查看代码
@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    private OrderService orderService;
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("{id}")
    public Order getOrder(@PathVariable("id") Long id){
        Order order = orderService.getById(id);
        //查询user
        String url="http://127.0.0.1:9096/user/"+order.getUserId();//查询url地址
        User user = restTemplate.getForObject(url, User.class);//发起调用
        order.setUser(user);//存入order
        return order;
    }
}

10.启动Userdemo和OrderDemo,并访问。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表