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;@SpringBootApplicationpublic 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框架治理。 */@Componentpublic 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)