项目创建及结构分析
- 第一步:打开项目新建窗口(快捷键ctrl+n), 搜索spring,选择spring starter 项目
- 第二步:填写项目基本信息。
- 第三步:选择Spring Boot版本。
- 第四步:项目从maven配置中指定的服务器去下载起步依赖,假如指定版本的springboot项目以前创建过,它会默认先从本地库查找--(假如本地库没有,则从远程库去下载)。
- 项目创建成功以后,包视图(Package Explorer)结构--
所有的类和配置文件都是创建好项目以后,由STS工具帮我们自动创建的。
项目启动过程分析
- 找到项目的入口类(使用@SpringBootApplication注解描述),然后运行启动类,检测启动过程。
- SpringBoot 项目在启动时,基于注解描述,进行配置并扫描指定包以及子包中的类进行加载,然后检测类上是否有Spring框架中指定的注解描述。
- 注意:当指定包以及子包中的类上有框架中指定的注解描述时--将类交给Spring框架中的BeanFactory工厂接口的实现类对象。
项目业务初步实现及测试
- 业务实现:通过Spring框架进行Bean对象的管理实现。
- 第一步:创建一个DefaultCache类,存储到src/main/java目录,然后交给spring管理。
- 第二步:添加sringboot 测试类,进行bean的获取及测试,要放在src/test/java目录中。
- 第三步:代码设计及运行分析
- 第四步:为对象设计作用域,设置延迟加载,设置生命周期方法。
- 第五步:通过测试类测试作用域,延迟加载,生命周期方法。
- Spring框架管理Bean对象的优势:--
-- Spring 是一个资源整合框架(Framework),通过spring可将很多资源(自己写的对象或第三方提供的对象...)整合在一起,然后进行科学应用,以便更好的对外提供服务。
Spring Boot 重难点分析
- Spring boot 是框架--搭建项目基础骨架
- Spring boot 核心优势--启动依赖,自动配置,系统检查
- Spring boot 项目的创建方式-- https://start.spring.io
- Spring boot项目启动时,Bean的初始化过程--查找,加载,读和存储配置,创建和存储实例对象
- Spring boot 项目启动时,Bean对象的依赖注入过程--标记,查找,注入
- Spring 框架中的Bean对象的特性--延迟加载,作用域,生命周期方法
注解
- @Autowired 用于描述类中属性或相关方法
- @SpringBootTest 工程中的单元测试类需要使用此注解进行描述
- @Scope("prototype") 每次从Spring容器获取对象都会创建一个新的实例
- @Lazy 此注解用于告诉spring框架,它描述的类的实例,假如暂时用不到,就不要先创建
- @PostConstruct 注解描述的方法会在对象构建以后执行,由于执行一些初始化操作
- @PreDestroy 注解用于描述Bean对象生命周期方法中的销毁方法,此方法会在对象销毁之前执行
断点
*断点是用来进行调试的时候方便程序停在某一处,以便寻找程序错误。需要在调试的环境下才可用。
*断点快捷键
F5:setp into (可用于跳入某个特定的方法)
F6:step over(用于跳过程序中的每一行代码)
F7:step return(跳出当前的方法回到程序的开始处)
F8:从当前行到下一个断点处,如果没有下一个,则运行完整个程序
SpringBoot 常见问题分析
*NoUniqueBeanDefinitionException:非唯一bean对象的定义--说明这个Spring容器中bean的类型有不止一个
*NoSuchBeanDefinitionException:Spring容器中没有这个Bean的定义
Spring Boot 整合连接池
*用户通过DataSource对象的getConnection()方法,获取一个连接。
假如池中有连接,则直接将连接返回给用户。
假如池中没有连接,则会调用Dirver对象的connect方法从数据库获取,拿到连接以后,可以将连接在池中放一份,然后将连接返回给调用方。
*dataSource对象是Spring框架(基于底层的自动配置-DataSourceAuto)来创建的
*dataSource.getClass().getName()--dataSource变量指向的对象的类型
常见问题分析
*易错点
a. 类名与注解名相同
b. DataSource接口包名引入
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。