关于springboot:03基于IDEA创建SpringBoot项目并进行入门分析

4次阅读

共计 1862 个字符,预计需要花费 5 分钟才能阅读完成。

SpringBoot 我的项目创立

创立 Module

基于 IDEA 创立我的项目 Module, 模块名为 04-springboot-start, 组 id 和包名为 com.cy, 如图所示:

填写 module 信息, 如图所示:

抉择我的项目 module 版本, 临时不须要本人手动增加任何依赖, 如图所示:

填写 Module 名称, 实现 module 创立, 如图所示

我的项目构造剖析

我的项目 Module 创立好当前,其代码构造剖析,如图所示:

SpringBoot 我的项目启动剖析

启动入口

SpringBoot 工程中由 SpringBootApplication 注解形容的类为启动入口类,例如:

package com.cy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {//Application.class
  public static void main(String[] args) {//Main Thread
    SpringApplication.run(Application.class, args);
  }
}

启动过程概要剖析

SpringBoot 工程启动时其繁难初始化过程,如图所示:

在启动过程中底层做了哪些事件,大抵形容如下:
1)基于配置加载类 (通过 ClassLoader 将指定地位的类读到内存 -> 底层通过线程调用 IO 从磁盘读取到内存)。
2) 对类进行剖析 (创立字节码对象 -Class 类型, 通过反射获取器配置信息)。
3) 对于指定配置 (例如由 spring 特定注解形容) 的对象存储其配置信息 (借助 BeanDefinition 对象存储)。
4) 基于 BeanDefinition 对象中 class 的配置构建类的实例(Bean 对象), 从进行 bean 对象的治理。

SpringBoot 疾速入门剖析

业务形容

在我的项目 Module 中定义一个类,类名为 DefaultCache,而后将此类对象交给 Spring 创立并治理。最初通过单元测试对类的实例进行剖析。

API 设计剖析

基于业务形容,进行 API 及关系设计,如图所示:

代码编写及运行

基于业务及 API 设计,进行代码编写,其过程如下:

第一步:定义 DefaultCache 类

package com.cy.pj.common.cache;
import org.springframework.stereotype.Component;
/**
 * @Component 注解形容的类,示意此类交给 Spring 框架治理。*/
@Component
public class DefaultCache {}

第二步:定义 DefaultCacheTests 单元测试类

package com.cy.pj.common.cache;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
public class DefaultCacheTests {
    /**
 * @Autowired 注解形容的属性由 spring 框架依照肯定规定为其注入值(赋值)* 赋值过程是怎么的?*  1)依赖查找?(请问查找规定是什么?)
 *  2)依赖注入?(须要借助什么技术?)
 */ @Autowired
 private DefaultCache defaultCache;
    @Test
 void testDefaultCache(){System.out.println(defaultCache.toString());
        //FAQ? defaultCache 变量援用的对象是由谁创立的,存储到了哪里?bean pool
 }
}

第三步:运行单元测试类进行利用剖析
启动运行单元测试办法,检测其输入后果,基于后果剖析:
1)SpringBoot 我的项目中 Bean 对象的构建。
2)SpringBoot 我的项目中 Bean 对象的获取。

运行过程中的 BUG 剖析

  • Bean 类型找不到,如图所示:

  • 空指针异样(NullPointerExcetpion-NPE), 如图所示:

SpringBoot 我的项目中的对象个性剖析

提早加载

对象作用域剖析

对象生命周期办法

SpringBoot 我的项目中的依赖注入过程剖析

依赖注入剖析

依赖注入案例设计及实现

依赖注入课堂练习设计及实现

总结(Summary)

正文完
 0