最基础springcloud微服务教学(一)--- 前提理论及创建父工程

摘要:
面对大中型公司的项目;还有很多初级到中级不等的程序员是没有接触过的;因为目前外面(比如上海、深圳、广州…)的大中型公司的面试是很有难度的;一般也只会看你做过的项目为基础;现在又比较流行微服务架构开发;普通程序员的进阶是一定通过微服务学习的;更何况这也是目前外面企业的最基本的要求。所谓面试造飞机;工作拧螺丝。难就难在要知道如何去造。目前最流行的也就两大微服务架构----springcloud、dubbo;可能还要很多程序员是没有听过dubbo;我也只是稍微对有些认识;但是目前还有很多公司使用它;这就是我为何说的原因。没办法啊;所以咋们需要学习这两套架构;我这里只是从最最基础教学springcloud;因为我觉得两样东西都是搞微服务的;再怎么说;学了一样再去学另一样;我觉得那也学的很快。因为我是从最基础打过来的人;吃了不少的坑;我想今天站在咋们最初级程序员角度上去讨论这个springcloud;每个细节;每个步骤;每步代码;我想把自己所理解的那份在这里呈现给大家;想要帮助更多IT行业的伙伴。

一、前提需求:
每一个所集成的框架都是解决一系列问题;实则就是达到使得开发起来更加简单,所以我觉得世界真正还是掌握在“懒人”手里;对于javaweb框架;从学校里最基础jsp -> servlet -> struts2 -> springmvc -> springboot 从不认识到熟悉;社会在进步;我们也不能够原地踏步;我相信还是有很多目前能够单独完成一个完整的后台系统的同学;而现在的springcloud微服务又是在springboot的建立之上使用的;它不是解决项目内的一系列问题;比如springboot框架它是解决了当前项目的配置文件复杂的问题啊;maven的出现是不是解决项目jar导包的等问题;它们都是直接为项目提供便利的;而我们的springcloud它没有为项目直接带来便利;那首先还得解释下什么是微服务: 它的核心就是将传统的一站式应用(就是一次可以达成war包的项目);根据业务拆分成一个一个的服务;彻底去耦合;每个服务提供单个业务功能;也就是一个服务做一件事;而springcloud架构就是这样一个开发模式。所以咋们前提是需要懂得springboot框架。因为这个是建立在单个独立的系统之上(也就是单个微服务);既然是单独一个系统;那么它也就可以拥有自己的数据库。下图一目了然:
在这里插入图片描述如果有需要可以看这篇文章:微服务的简介
所以需要开发中对springboot有一定的了解,如果不了解的话可以看这篇文章:2小时学会springboot

二、创建父工程
下面呢;我就以Dept部门模块做一个微服务通用案例。Consumer消费者(Client)通过REST调用Provider提供者(Service)提供的服务。为什么创建父工程;既然是写微服务;是不是就得创建多个Moudle子模块啊;如果多个子模块有加载同一个jar包的话;是不是看起来显得很复杂;我将这些共同所要依赖的jar;全部放进父工程;将来只需要引用父工程的坐标是不是就行了;而且我必须还得保证所有的子模块所依赖的jar版本必须是相同的啊;不然版本不一是不是也会出现问题。所以我此时建立父工程:
File -> Project -> Maven 创建一个Maven工程;名称叫做springcloud_parent
对于一个空项目来说我的思维习惯是先配置后打代码;这种总习惯我觉得对于大家来说也挺好的;清楚什么东西做什么事情;那我们就先从pom文件开始;看看咋们微服务的子模块会有哪些需要用到共同的jar包:

<packaging>pom</packaging>   <!--pom 项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的-->

 <!--版本参数-->
    <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.16.18</lombok.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--springboot的导入-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.9.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--mysql驱动包-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>

            <!--连接池-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.10</version>
            </dependency>


            <!--mybatis和springboot的整合包-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.2</version>
            </dependency>

            <!--日志-->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>


            <!--junit测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>

            <!--log4j-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

解释dependencyManagement参数属性的作用:管理jar;使得子模块引入jar的版本统一,它并不可以将jar全部导进子模块中。
以上所导入的包;都是子模块共同需要的到的。
总体概述 我相信只要你看了这篇文章;或多或少对微服务也有那么点了解;不就是一个大项目拆分麻;虽然咋们还不知道如何动手;但是这个方向还是要有的不;那么接下来;咋们就得拿起键盘往死里干它了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小面包CC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值