Spring Boot认知

Posted 天堂里外

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot认知相关的知识,希望对你有一定的参考价值。

SpringBoot核心:

    1、起步依赖

        SpringBoot初始化时自带众多依赖,基本只通过spring-boot-starter-xxx的jar包就可以保证工程的运行和发布,减少了类似于配置Spring框架工程中需要填写的大量引用

    2、自动配置

        Spring中通过在xml中大量的bean类来进行相关实例的初始化及容器控制,在springboot中去除了xml的繁杂配置,通过properties或yml配置文件+注解的方式即可以启动和运行,甚至可以只使用@SpringBootApplication注解即可运行

    3、CLI命令

        Spring Boot CLI 是用于快速开发 Spring 应用的命令行工具。用来运行 Groovy (与 Java 风格类似)脚本。

    这里暂不学习 之后再研究一哈。

    4、Actuator监控

        主要值得就是spring-boot-starter-actuator模块中已经实现了一些原生端点,根据端点的作用,可以将原生端点分为三大类:

  • 应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与Spring Boot应用密切相关的配置类信息。
  • 度量指标类:获取应用程序运行过程中用于监控的度量指标,比如内存信息、线程池信息、HTTP请求统计等。
  • 操作控制类:提供了对应用的关闭等操作类功能。

        可以理解为Springboot在运维领域已经为我们提供了很多有效的指标与信息 方便我们对此进行相关数据的监控与问题的定位

 

优点:

    1、独立运行 使用java -jar xx.jar即可运行 cli命令也可以

    2、简化配置 消除了大量xml配置

    3、自动配置

    4、无代码生产和xml配置,通过注解来实现

    5、内嵌多种服务容器 tomcat(spring-boot-starter-web),Undertow,Jetty 

    6、方便、专一既是趋势 在云的概念上来说 未来的发展肯定是 在某一规则下各个公司精专某一方面 以此组成共同的数据中台,发展大数据

    7、从销售的领域来说 一个产品可以由多个微服务共同组成,可以以此更容易向客户指定个性化产品 符合当前发展趋势

 

缺点:

    1、入门容易精通难

    2、以前是所有功能全部做到一个系统中,维护起来只需要维护这一套系统即可,现在一套系统包含了无数个微服务,每个微服务一个程序,维护工作大幅增加

    

核心注解:@SpringBootApplication 通过在main函数中 SpringApplication.run(引导类的字节码对象);即可运行

 

配置文件:

    1、*.properties

    2、*.yml 

    ps: yml格式不支持 @propertySource注解

 

main函数:主要启动SpringBoot框架,用于加载容器和Spring等默认组件

    @SpringBootApplication 用户表示声明一个SpringBoot框架容器

主要组合包含了一下三个注解:

    @SpringBootConfiguration: 组合了@Configurationz注解,实现配置文件的功能

    @EnableAutoConfiguration 打开自动配置的功能,也可以关闭某个自动配置的选线,如关闭数据源自动配置功能 @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

    @Component Spring组件扫描

 

SpringBoot中常用注解:

    1、引导类的@SpringBootApplication

    2、@Controller 处理http请求

    3、@RestController @Response和@Controller的组合

    4、@RequestMapping配置url映射关系

    5、@ConfigurationProperties(profix="配置文件中的key的前缀") 可以降配置文件中的配置自动与实例进行映射

    6、@AutoWired

    7、@Primary 多个Bean候选者是,被注解为@Primary的Bean将作为首选者

    8、@Transactional:事务标注 方法报错 事务回滚

    9、@EnableConfigurationProperties(value={DBConfig1.class,DBConfig2.class});

    10、@Async:异步加载启动main方法上 需要加上@EnableAsync才能使其生效  

                在Springboot中对其进行了简化处理,只需要配置一个类型为java.util.concurrent.TaskExecutor或其子类的bean,并在配置类或直接在程序入口类上声明注解@EnableAsync
                调用在由Spring管理的对象的方法上标注注解@Async,显式调用即可生效。
    11、@ControllerAdvice 全局捕获异常:把整个站点全部拦截,然后跳转到对应的页面 
                在全局捕获异常的类上加@ControllerAdvice
                方法上加@ExceptionHandler(RuntimeException.class)
                如果需要返回Json格式加@ResponseBody注解即可
 
 
    Spring热部署:
            无需手动重启,Spring Boot应用自动重启
            使用的是devtools 原理为:使用了两个ClassLoder 一个classLoader加载那些不会改变的类(第三方Jar包) 另一个ClassLoader加载会更改的类,称为restart ClassLoader, 这样在有代码更改的时候 由于加载的类相比较少,所以事先了较快的重启项目

 

    ps 微服务之间是如何通讯的, Spring Cloud和Dubbo有哪些区别?

            Spring Cloud 使用Rest和http方式

            Dubbo使用RPC方式

 

https://www.jianshu.com/p/736acdcdfa9b

https://www.cnblogs.com/zhuyeshen/p/11730714.html

知乎 百度 csdn多篇博客

以上是关于Spring Boot认知的主要内容,如果未能解决你的问题,请参考以下文章

解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式

一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式

Spring Boot部署JAR文件瘦身优化经验分享