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),如图所示:
发表回复