广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringCloud入门实验环境搭建
  • 277
分享到

SpringCloud入门实验环境搭建

2024-04-02 19:04:59 277人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录微服务 微服务架构 springCould简介 环境搭建 1. 创建数据库 2. 新建一个子模块api 3. 新建一个子模块provider作为服务的提供者 新建子模块consu

微服务

个人理解:

所谓微服务是指每个模块都可以独立完成自己的核心业务,某一个模块的崩溃不影响其他模块的运行,
每个微服务有自己单独的一个数据库
每一个微小的服务组成了一个复杂的软件系统

微服务架构

微服务指的是服务的大小,关注的是完成一个具体的服务(医院的科室)

微服务架构是一种架构模式 ,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相
配合,为用户提供最终价值。一种将一个单一应用程序开发为一组小型服务的方法,每个服务都在其运行
的进程中。(整个医院)

优点:

  • 针对特定服务发布,影响小,风险小,成本低
  • 频繁发布版本,快速交付需求
  • 低成本扩容,弹性伸缩,适应云环境

SprinGCould简介

SpringBoot关注于更快的开发单体的微服务,而SpringCloud关注于全局服务的治理

spring cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。

Spring 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装、屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

环境搭建

idea中新建一个Maven父工程在其pom配置对应依赖,以管理子类依赖的版本


 <properties>

        <lombock.version>1.18.18</lombock.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>
    <dependencyManagement>

        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                <version>3.0.2</version>
            </dependency>

            <!--spring cloud 依赖包-->
            <!-- Https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring boot 依赖包-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--数据库驱动-->
            <dependency>
                <groupId>Mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.22</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.21</version>
            </dependency>
            <!--springboot 启动器-->
<!--            <dependency>-->
<!--                <groupId>org.springframework.boot</groupId>-->
<!--                <artifactId>spring-boot-starter</artifactId>-->
<!--                <version>2.4.4</version>-->
<!--            </dependency>-->
            <!--JUnit-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
            <!--lombock-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombock.version}</version>
                <scope>import</scope>
            </dependency>
            <!--log4j-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>

            </dependency>
        </dependencies>
    </dependencyManagement>

1. 创建数据库

创建名为db01的数据库,有一张表dept

2. 新建一个子模块api

其中只有一个实体类dept对应我们数据库中的表


public class Dept {
    private int deptnumber;
    private String dname;
    private String d_source;
   //对应属性的get和set方法
}

3. 新建一个子模块provider作为服务的提供者

导入依赖


  <dependencies>
  <!--将api模块导入由此可使用Dept实体类-->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-WEB</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
    </dependencies>

配置配置文件和对应的操作类和接口

application.xml


server:
  port: 8081

mybatis:
  type-aliases-package: pojo
  mapper-locations: classpath:Mybatis/mapper
@Configuration
public class ConfigBean {
    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }

}

@RestController
public class ConsumerController {
    @Autowired
    private RestTemplate template;
    private static final String url="http://localhost:8001";
    @RequestMapping("/consumer/get/{id}")
    public Dept getByID(@PathVariable long id){
                                                    //请求的路径,请求返回的对象
        Dept getEntity = template.getForObject(url + "/dev/" + id, Dept.class);
        return getEntity;
    }
    @RequestMapping("/consumer/add")
    public boolean add(String dname){
        Dept dept = new Dept();
        dept.setDname(dname);
        System.out.println(dept);
        //请求的路径,传递的参数,返回的对象
        return template.postForObject(url+ "/dev/add",dept,Boolean.class);
    }
    @RequestMapping("/consumer/list")
    public List<Dept> list(){
        //请求的路径,返回的对象
        return template.postForObject(url+"/dev/list",void.class,List.class);
    }

}

启动类及运行结果

debug-connect refuserd---debug-传参为null


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

debug

子项目无法使用父项目的依赖包

1 如果父项目pom使用


<dependencyManagement>
<dependencies>
          ....

</dependencies>
</dependencyManagement>

方式,则子项目pom不会自动使用父pom中的jar包, 如果需要使用,就要给出groupId和artifactId,无需给出version

使用是为了统一管理版本信息

在子工程中使用时,还是需要引入坐标的,但是不需要给出version

在我们项目顶层的POM文件中,元素。

通过它元素来管理jar包的版本,

让子项目中引用一个依赖而不用显示的列出版本号。

Maven会沿着父子层次向上找,

直到找到一个拥有dependencyManagement元素的项目,

然后它就会使用在这个dependencyManagement元素中指定的版本号。

required a bean of type 'DeptDao' that could not be found.

使用@Mapper而不是@Repository

    1、使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。

    2、@repository则需要在Spring中配置扫描包地址,然后生成dao层的bean,之后被注入到ServiceImpl中

Connection refused connect

检查url端口号,是否写对,是否占用

RestTemplate传递对象无法接收(null)

服务器端对应的参数上添加@RequestBody


    @PostMapping("/dev/add")
    public boolean aDDDept(@RequestBody Dept dept){
        System.out.println(dept);
       return deptimpl.add(dept);
    }

以上就是SpringCloud入门实验环境搭建的详细内容,更多关于SpringCloud 环境搭建的资料请关注编程网其它相关文章!

--结束END--

本文标题: SpringCloud入门实验环境搭建

本文链接: https://www.lsjlt.com/news/123761.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作