java学习之路

spring boot2 (一)spring简介,依赖管理和自动

2021-01-04  本文已影响0人  唯有努力不欺人丶

二刷雷神的spring boot,区别是上一个是spring boot1.x版本的,这次是2.x版本的。
然后因为学过一遍了,所以可能这次我的整理会稍微的粗略了一点,之前详细说过的现在会稍微简略点,当然了遇到新的东西也会详细介绍。
先附上雷神的教学文档:https://www.yuque.com/atguigu/springboot
首先这里先大致的说一下spring。
spring最开始确实知识一个框架,但是随着延伸和发展,现在我们说的spring更像是一个生态圈。其不仅仅是spring框架,当然了现在直接用spring的也比较少,我们更习惯于用它的进阶版:spring boot,springboot相比于spring最大的特点就是自动配置,其也解决了spring需要的大量繁杂配置的情况。而spring5(spring boot2)相比于以前是很大的变化。其主要有两点原因:

spring boot的本质就是整合spring全家桶的一个框架。能快速创建出一个生产级别的spring应用。其主要优点:

一句话总结:spring boot是整合spring技术栈的一站式框架,是简化spring技术栈的快速开发脚手架。

其缺点:

时代背景

在介绍spring boot时代背景的时候说了下几点:微服务,分布式,云原生。这里简单的总结一下。
微服务是一种架构风格

分布式的技术

由于以上种种技术的实现,spring boot+spring cloud就可以解决。
云原生指原生应用如何上云,能够解决的问题:

(貌似这些问题阿里云都可以解决,毕竟我不是专门的运维)

在以上这个背景下,spring boot应时代而生,SpringBoot其两大特点:依赖管理自动配置

依赖管理

spring boot的parent包中指定了大部分jar 的版本号。
如果对于它默认指定的版本有意见,也可以自定义修改版本,一般步骤:
1. 查看系统指定的版本号和标签名称
2. 在自己的pom文件中指定该标签名称的版本号

自己指定版本号
这里有一个概念:场景启动器。官方的场景启动器都是spring-boot-starter-xxx。只要引入starter,这个场景需要的常规依赖都会自动引入。
spring建议如果是三方的场景启动器,命名是xxx-spring-boot-starter。
所有场景启动器最底层的依赖就是spring-boot-starter

自动配置

这里要从spring boot的启动开始说起:
我们可以简单的看一下,springboot启动的那个run方法其实是有返回值的,返回的就是ioc容器。我们可以输出一下看看这个容器中都有什么组件。代码如下:

@SpringBootApplication
public class LsjApplication {
    public static void main(String[] args) throws Exception{
        //返回我们的ioc容器
        ConfigurableApplicationContext context = SpringApplication.run(LsjApplication.class, args);
        //查看一下容器里都有啥组件
        String[] beans = context.getBeanDefinitionNames();
        for(String s:beans) System.out.println("<<<<<<<"+s);
    }
}

然后我们运行一下看看(注意引入的依赖越多容器中的组件越多,我这里只引入了web的场景启动器):


容器中的组件
容器中的组件

如上图,首先基本组件,自定义的组件都引入了。其次有一些必要而且常用的组件也都自动注入了,因为我引入了web的场景启动器,所以和其相关的一些tomcat,mvc,视图解析器啥的都自动配置注入了。
这个自动配置是如何实现的呢?就拿我只引用了web场景启动器为例:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.3.4.RELEASE</version>
      <scope>compile</scope>
 </dependency>
@SpringBootApplication(scanBasePackages="lsj")

等同于:

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("lsj")

至此这个自动配置算是从头到尾理了一遍。当然这里说的很简略,比如有些原本就不存在的生僻依赖就没办法有默认版本,还有自动配置这块spring-boot自动配置的东西虽然比较多但是也不见得那么全的,我们也可以自定义场景启动器实现自动注入。
因为我是刷过spring boot1再来刷这个的,感觉作为复习从头串一遍理解的更清楚了。其实这里很多细节就没说,比如跟代码走一遍看看为什么默认扫描启动类包下的所有类,还比如为什么那三个注解等同于启动类注解。这些都比较简单,自己翻代码就能看懂,而且自己翻出来的东西印象更深。
spring boot2中的第一节基础入门就到这里,反正笔记确实少记了很多东西。虽然boot1.x和2.x有很大的差别,但是其中很多基本理念和原理还是差不多的,这里重复的内容我很多没整理,建议如果觉得上面笔记太跳或者看的不清楚的可以去看看 boot1.x的笔记,下面是传送门:https://www.jianshu.com/p/8dbe22b329f4

本篇笔记就记到这里,如果稍微帮到你了记得点个喜欢点个关注,也祝大家工作顺顺利利!生活健健康康!生命不息,学习不止!

上一篇 下一篇

猜你喜欢

热点阅读