Spring Boot

Spring Boot的特性

1)快速构建独立Spring应用程序
2)嵌入式Tomcat,Jetty容器,无需部署WAR包
3)简化Maven及Gradle配置
4)尽可能的自动化配置Spring,无代码生成和xml配置
5)直接植入产品环境下的实用功能,比如度量指标、健康检查及扩展配置等
6)对主流开发框架和工具链做无配置集成

Spring Boot优缺点

优点:

1)解决配置繁琐的问题,最大化的实现convention over configuration(约定大于配置);
2)springboot 要解决的问题, 精简配置是一方面, 另外一方面是非常方便的让spring生态圈和其他工具链整合(比如redis, email, elecsearch)
3)有Pivotal和Netflix这两个干爹罩着, 个人认为SpringBoot(由Pivotal团队提供)前途一片光明(国内的一些大厂其实早就再用了)

缺点:

1)因为刚出不久,文档略少,加上对Spring Boot的auto configuration loading等机制的封装, 给人感觉入门容易,但是如果没有完整学习spring的体系,碰到问题就一脸懵逼。据我所知,很多玩spring boot的人连怎么打开底层包的log都不知道,怎么可能能发现问题呢?比如很多人会碰到启动时不知道框架哪里抽风,会导致系统无法启动,报的错都很神奇,搜完百度和谷歌和stackflow都没解决方案。(后来有人说@DependsOn注解就能搞定,没试过不清楚行不行);
2)版本迭代速度太快(最近太火了), 一些模块改动很大, 比如 springboot-test的1.3.5 vs 1.4

总结

Spring boot给我的感觉是入门容易,深入难。它实现了我们之前常用的Spring技术,并通过零配置或者说约定大于配置的方式将其集成在一起,方便开发者快速开发应用,这种封装的方式有好有坏,当然操作变简单这是最真实的体验。Boot的诞生依靠的是近几年SOA式的微服务架构的流行,也正是这个原因,他多数应用在微服务中充当个体。

最后

下节我们将按照结构复杂的单一系统 > 微服务 > Docker化 > 自动化,演变思路,讲解过渡到Spring cloud使用上

 

先说说它们的区别,如下几点:

  • 微服务架构强调业务系统需要彻底的组件化和服务化,一个组件就是一个产品,可以独立对外提供服务。

  • 微服务不再强调传统 SOA 架构里面比较重的 ESB 企业服务总线。

  • 微服务强调每个微服务都有自己独立的运行空间,包括数据库资源。

  • 微服务架构本身来源于互联网的思路,因此组件对外发布的服务强调了采用 HTTP Rest API 的方式来进行。

  • 微服务的切分粒度会更小。

 

总结:微服务架构是 SOA 架构思想的一种扩展,更加强调服务个体的独立性、拆分粒度更小。

 

为什么考虑 Spring Cloud

 

考虑 Spring Cloud 的原因有如下几点:

  • Spring Cloud 来源于 Spring,质量、稳定性、持续性都可以得到保证。

  • Spirng Cloud 天然支持 Spring Boot,更加便于业务落地。

  • Spring Cloud 发展非常的快,从 2016 年开始接触的时候相关组件版本为 1.x,到现在将要发布 2.x 系列。

  • Spring Cloud 是 Java 领域最适合做微服务的框架。

  • 相比于其它框架,Spring Cloud 对微服务周边环境的支持力度最大。

  • 对于中小企业来讲,使用门槛较低。

  • Spring Cloud 是微服务架构的最佳落地方案。

 

Spring Cloud 的特性

 

以下为 Spring Cloud 的核心特性:

  • 分布式/版本化配置。

  • 服务注册和发现。

  • 路由。

  • 服务和服务之间的调用。

  • 负载均衡。

  • 断路器。

  • 分布式消息传递。

 

这些特性都是由不同的组件来完成,在架构的演进过程中扮演着重要的角色,接下来我们一起看看。

 

 

微服务架构

 

Spring Cloud 解决的第一个问题就是:服务与服务之间的解耦。很多公司在业务高速发展的时候,服务组件也会相应的不断增加

 

 

 

****************************************************************************************************************************

                                                    Maven + SpringBoot 框架搭建

创建第一个父工程,MavenProject   选择pom

CTRL+SHIFT+F    格式化调整代码的样式

我们在父工程中规定好了<java.version>1.8</java.version>JDK的版本是1.8,还有项目的格式是UTF-8 ,Spring-Boot 1.5.2,

规定好了fastjson包

 

<properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot.version>1.5.2.RELEASE</spring-boot.version>
        <fastjson.version>1.2.21</fastjson.version>
        <dubbo-spring-boot>1.0.0</dubbo-spring-boot>

    </properties>

让父工程继承上面的包的版本号,就是让子工程一实现以上的版本号

我们需要创建两个项目,一个是消费者一个是提供者,配置(Spring Boot Dubbo 依赖),无论是dubbo或者是zookeeper都要和Spring整合,消费者需要使用dubbo, 提供者也需要使用dubbo

 

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>

    <dependencyManagement>
        <dependencies>
            <!-- Spring Boot Dubbo 依赖 -->
            <dependency>
                <groupId>io.dubbo.springboot</groupId>
                <artifactId>spring-boot-starter-dubbo</artifactId>
                <version>${dubbo-spring-boot}</version>

            </dependency>

                 <!-- 引入json的包 依赖 -->

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>
        </dependencies>

    </dependencyManagement>

我们需要把公共的部分的jar包提取出来,提供不同的项目使用

    现在需要创建两个父工程的子工程,

                子工程一,(消费者) ,消费者里面写的是Controller,用户访问的时候需要访问的地方,用户访问的页面也要放在Controller,把请求访问提交给Controller,Controller在把所有的请求交给Service,Service进行处理,把所有的压力都交给Service,只需要多启动几台服务器就好啦

 

继承父工程

<parent>

    <groupId>com.kong</groupId>
    <artifactId>kong-maven</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.kong</groupId>
  <artifactId>kong-Customer</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

第一步:继承父工程    格式(war)  

第二步:导入子工程依赖的jar包    包中有tomcat的启动包,

我们还需要创建一个提供者,提供者又分为两部分,一部分是接口,一部分是实现类,接口是留着被别人(消费者)来调用的,实现类才是真正的来处理业务,就是给接口和实现类创建一个父工程,但是这个父工程又继承类比他大一级的父工程

创建提供者的父工程  (pom)

创建两个子工程,一个接口一个实现类,接口的那个项目,什么都不需要依赖jar

接口要调用实现类,实现类要调用dao,dao操作增删改查

创建Controller层 加上注解 @Controller      和       @RestController:表示这个方法下的所有方法都不需要添加(@RequestBody注解)

 

mvn compile  springboot框架加载文件命令

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值