zoukankan      html  css  js  c++  java
  • springboot详解

    一、问题纲要

      1、什么是springboot?

      2、springboot的结构和使用?

      3、springboot和传统的spring项目的区别?

      4、分布式微服务?

    二、详情

      1、概念:

      Spring Boot是由Pivotal团队提供的全新框架,属于spring旗下的一个项目,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,它使用“习惯优于配置”的理念,从而使开发人员不再需要定义样板化的配置。使用springboot很容易创建一个独立运行的spring项目,并且可以几乎不使用spring配置或者使用很少的配置。

      2、结构和使用:

      springboot和普通的javase项目相似,一个普通的maven项目添加它的依赖就行。spring提供很多的start pom简化maven的依赖加载,一般会配置一个parent依赖,控制整个springboot的版本,如果是web项目,配置一个spring-boot-start-web依赖,会自动关联一些常用的web依赖,比如springmvc、servlet甚至它会嵌入一个tomcat容器,因此无需再tomcat服务器中进行发布。springboot会自动扫描src/main/resources文件夹下的配置,一般是一个properties(application.properties)或者yaml文件,里面配置一些少量的必要的应用配置,例如数据库连接信息、服务器名称端口号之类的信息。

      编写springboot的入口类,一般命名是xxxApplication.java,其他的类都在它所在的目录或者子目录中,这样spring容器会自动扫描有相应注解的类。入口类上的注解是SpringBootApplicaton,类中有个Main方法作为程序入口,springboot框架提供一个方法启动项目Application.run(本类名.class,args)。一直运行就启动springboot项目。

      以上两步就是最基本的配置,并且是一个呈现一个基本的springboot雏形。

      springboot运行原理:

      入口注解@SpringBootApplication注解是一个组合注解,它包含@configuration、@EnableAutoConfiguration和@componentScan三个注解组成。它的核心是@EnableAutoConfiguration注解。这个注解中有一个@Import注解,它导入配置功能EnableAutoConfigurationImportSelector,这个类有个方法扫描具有/META-INF/spring.factories文件的jar。spring.factories中声明了哪些自动配置。然后我们在application.properties文件中进行相应的配置,比如数据库连接,使springboot中的自动配置中的参数是我们需要的配置。

      springboot启动:

      springboot项目打包后的结构

      

      在manifest.mf中内容如下:

      

      可以看到有Main-Class是org.springframework.boot.loader.JarLauncher ,这个是jar启动的Main函数。

    还有一个Start-Class是com.example.SpringBootDemoApplication,这个是我们应用自己的Main函数。

      springboot的配置方法:

      springboot配置最大的特点是“约定优于配置”,很多配置方式都是使用的业界习惯的方式配置,一般遵循springboot的配置方式,大部分配置都能够在application.properties文件中配置,而且非常简单。但是也有不能再这个文件中配置的。

      springboot是spring旗下的产品,分为三种配置方式:

        1)xml文件形式。从spring1.x版本开始使用。

        2)xml和注解并用的实行。基本配置使用xml(例如数据库配置),业务配置使用注解。

        3)Java形式的配置,从spring4.x推荐使用。使用@Configuration注解表明该类是一个注解类,@Bean配置方法上表明当前方法返回一个Bean。

      3、区别:

      spring创造项目中需要的对象(控制反转),解决耦合问题,实现“一站式”开发,aop面向切面编程,是各个框架无缝整合。而springboot拥有spring所有的功能,实现“零配置”简化spring繁杂的配置。

      springboot可以是jar/war的形式发布,并且自带tomcat容器(里面默认是servlet容器),spring的传统项目只能是war形式,需要在tomcat中发布。

      springboot是自动配置,spring传统web项目需要逐一配置。

      4、微服务:

      微服务的含义:使用定义好的边界小的独立组件来做好一件事情。微服务是相对于传统的单跨式架构而言的。springboot就是服务框架。

      单块式架构式一份代码,部署和伸缩都是基于单元进行的,它的优点是易于部署,但是面临着可用性低、可伸缩性差、集中发布的生命周期以及违反单一功能原则。而微服务是以单个独立服务做一个功能,按照功能边界拆分为单个服务,体现分布式的特征,因此每个微服务之间的通信需要解决。springCloud是基于springboot的为解决分布式开发常用问题提供的完整方案。提供配置管理、服务发现、断路由、代理服务等做分布式开发常用问题的解决方案,这里不做详细介绍。

      

  • 相关阅读:
    串口调适
    取出不重复的6个数
    个人Windows 10必备软件以及浏览器必装插件等
    合肥工业大学宣城校区2018年-2019年第一学期(大三上学期)物联网工程专业资料汇总(含课件、个人实验报告、实验代码、课设报告等)
    合肥工业大学宣城校区2019年-2020年第二(大三下)学期物联网工程专业资料汇总(含课件、个人实验报告、实验代码、课设报告等)
    合肥工业大学宣城校区2020年-2021年第一(大四上)学期物联网工程专业资料汇总(含课件、个人实验报告、实验代码、课设报告等)
    软件工程-单元测试-计算机测试-复习札记
    8086汇编计算分段函数值
    C语言是开源的吗?C++是开源的吗?C语言、C++是两个开源的标准,而不是开源软件或其它
    合肥工业大学编译原理实验LR(1)文法分析完整Scala实现代码(Java封装GUI)与测试数据
  • 原文地址:https://www.cnblogs.com/fengmao/p/8097739.html
Copyright © 2011-2022 走看看