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),如图所示: