八股文9:SpringBoot(针对项目)

文章目录

SpringBoot

什么是SpringBoot ?(Spring的子项目)

在这里插入图片描述

Springboot的启动流程(main方法的入口)

一个Springboot项目的main方法的例子
在这里插入图片描述

@SpringBootApplication注解

在这里插入图片描述

在这里插入图片描述

@ComponentScan注解(对应扫描XML配置中的元素)

在这里插入图片描述

在这里插入图片描述

@SpringBootConfiguration (配置类就是对应Spring的xml 配置文件)

本质看看有没有注入第三方的bean,模式类上标注@Configuration注解+方法上表述@Bean注解

在这里插入图片描述

注意实例名是方法名,取名字的时候需要小心了

在这里插入图片描述

在这里插入图片描述

spring容器扫描注册bean的时候,会优先注册程序员自己写的bean,利用@ConditionOnMissingBean判断是不是需要注入最原始的Bean,如果发现容器中已经有程序员定义的bean了就不会注入原始的bean了

在这里插入图片描述

在这里插入图片描述

@EnableAutoConfiguration(自动装配的核心注解)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

比如咱们进入那个AopAutoConfiguration自动配置类

在这里插入图片描述

在这里插入图片描述

SpringApplication.run的两件事

SpringApplication的实例化

getSpringFactoriesInstances(说明是从Spring.factories获取相应的spring容器的初始化器和程序监听器,这两个实际是这个类的成员变量,后续用在run方法上使用)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

SpringApplication.run方法的执行

完成了实例化,下面开始调用run方法

在这里插入图片描述

// 运行run方法
public ConfigurableApplicationContext run(String... args) {
   
   // 此类通常用于监控开发过程中的性能,而不是生产应用程序的一部分。
   StopWatch stopWatch = new StopWatch();
   stopWatch.start();

   ConfigurableApplicationContext context = null;
   Collection<SpringBootExceptionReporter> exceptionReporters = new ArrayList<>();

   // 设置java.awt.headless系统属性,默认为true
   // Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。
   configureHeadlessProperty();

   // KEY 1 - 获取SpringApplicationRunListeners(这个是事件监听器----从Spring.factories中获取)
   SpringApplicationRunListeners listeners = getRunListeners(args);

   // 通知监听者,开始启动
   listeners.starting();
   try {
   
       ApplicationArguments applicationArguments = new DefaultApplicationArguments(
               args);

       // KEY 2 - 根据SpringApplicationRunListeners以及参数来准备环境
       ConfigurableEnvironment environment = prepareEnvironment(listeners,
               applicationArguments);
       
       configureIgnoreBeanInfo(environment);

       // 准备Banner打印器 - 就是启动Spring Boot的时候打印在console上的ASCII艺术字体
       Banner printedBanner = printBanner(environment);

       // KEY 3 - 创建Spring上下文
       context = createApplicationContext();

       // 注册异常分析器
       analyzers = new FailureAnalyzers(context);

       // KEY 4 - Spring上下文前置处理
       prepareContext(context, environment, listeners, applicationArguments,
               printedBanner);

       // KEY 5 - Spring上下文刷新
       refreshContext(context);

       // KEY 6 - Spring上下文后置处理
       afterRefresh(context, applicationArguments);

       // 发出结束执行的事件
       listeners.finished(context, null);

       stopWatch.stop();
       if (this.logStartupInfo) {
   
           new StartupInfoLogger(this.mainApplicationClass)
                  .logStarted(getApplicationLog(), stopWatch);
      }
       return context;
  }
   catch (Throwable ex) {
   
       handleRunFailure(context, listeners, exceptionReporters, ex);
       throw new IllegalStateException(ex);
  }
}

在这里插入图片描述

顺序问题

在这里插入图片描述

SpringBoot常用注解

在这里插入图片描述

在这里插入图片描述

Spring Boot Starter是什么?如何自定义Spring Boot Starter?

是什么

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

怎么自定义((我们的功能类+)配置属性类+自动配置类+spring.factories)

狂神的starter定义步骤
在这里插入图片描述

在这里插入图片描述

配置属性类的作用(默认初始化的值+使用yaml配置文件“批量注入”类的属性值)

在这里插入图片描述

读取配置文件与配置属性类

添加传送门:@value(${配置文件的key})注解和@ConfigurationProperties 自定义属性类

@value注解方式:

在这里插入图片描述

在这里插入图片描述

自定义属性配置类方式:

首先定义一个属性类:做好在配置文件中的前缀设置
在这里插入图片描述

相应的配置类注册这个属性类的bean并使用使用这个配置好的属性bean来完成自己的属性填充
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

什么是javaConfig(利用java配置)

原来是xml文件+java来配置bean,现在是注解+java来配置bean(即纯java的方式)
在这里插入图片描述

什么是 Spring Profiles?

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

spring-boot-starter-parent 有什么用 ?(硬背)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?

在这里插入图片描述

SpringBoot中的WebMvcConfigurer

在这里插入图片描述
相关可以实现拦截器,静态资源访问的具体配置实现

你项目的应用有哪些?

1.登陆拦截器(addInterceptors:拦截器)

在这里插入图片描述

2.跳转页面(addViewControllers:页面跳转)

在这里插入图片描述

3.跨域配置( addCorsMappings:跨域)–鸡肋(适用于只有这一个拦截器的情况)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

使用过滤器进行跨域配置,filter在servlet的外面

在这里插入图片描述

待解锁的springcloud联动问题(实习弃)

bootstrap(引导)的配置文件的作用

我们将多个的yaml文件配置在远程的服务配置中心nacos中,用于从远程中获取需要到的配置文件的相关信息
在这里插入图片描述

加载远程配置文件:

namespace+group+dataID(服务配置中心----多环境的切换)

在这里插入图片描述
在这里插入图片描述

Mybatis

什么是mybatis

在这里插入图片描述

JDBC的不足之处,Mybatis的改进方法

在这里插入图片描述

Mybatis的优缺点

在这里插入图片描述

Springboot中mybatis的配置

在这里插入图片描述

mybatis的工作原理

在这里插入图片描述

mapperstatement就是mapper.xml对应一个查询语句的标签对象,statementId就是namespace+方法名唯一映射形成的一个唯一的映射的对象
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

mapper.xml加载解析与注册mapper对应的代理类

SqlSessionFactoryBuilder.mapperElement() & 解析SQL语句(小腹哥的简易版本)

private Map<String, XNode> mapperElement(List<Element> list) {
   
    Map<String, XNode> map = new HashMap<>();
    Element element = list.get(0);
    List content = element.content();
    for (Object o : content) {
   
        Element e = (Element) o;
        String resource = e.attributeValue("resource");
        try {
   
            Reader reader = Resources.getResourceAsReader(resource);
            SAXReader saxReader 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值