Spring Boot快速入门

一、创建项目及结构分析
1.创建spring boot项目
1)Service URL: https://start.spring.io 、 http://start.aliyun.com
2)项目创建之后就便开始从maven配置中指定的私服去下载起步依赖,如本地库有对应的依赖包会默 认到本地库中查找,如本地库没有则去私服中下载

2.目录结构
1)src/main/java: 用于存放java源代码文件
2)src/main/resources: 用于存放配置文件(如spring中的xml配置文件等)
3)src/test/java: 主要存放本项目测试所用的java源代码
4)src/test/resources: 存放测试所用的配置文件

二、项目启动过程及分析
1.注解:
1)@SpringBootApplication: 描述的类为springboot项目的启动入口类
2)@SpringBootTest:Spring boot测试类入口,类交由spring框架进行管理
3)@Autowired: 用于告诉spring框架要为此属性注入一个值
4)@component: 把该类交由spring容器进行管理
5)@Test:spring boot中测试方法上使用(@org.junit.juiter.api.Test)
6)@Lazy:延迟加载(懒加载)–暂缓对象的创建,等需要的时候再加载类
7)@Scope: 默认为单例作用域
A .@Scope(“singleton”): 单例作用域,在整个内存只有唯一一份,通过共享设计(Bean池), 实现对象的可重用性,此对象何时创建由懒加载(Lazy)特性设计决定,是否可以被销毁由spring 框架决定(一般是在容器销毁时销毁),适合使用率高的对象
B .@Scope(“prototype”): 多例作用域,此作用域的对象在需要时创建,每次从容器获取都是 一个新的对象,但spring不负责销毁,适合应用使用率低的对象
8)@PostConstruct: 此注解描述生命周期初始化方法,在构造方法执行之后执行,用于实现一些资源的初始化操作
9)@PreDestroy: 此注解描述生命周期初始化方法,在对象销毁之前执行

2.Spring boot项目在启动时,首先基于启动入口类上的注解描述,进行自动配置并扫描本包及子包的类进行加载,然后检测类上带有spring框架中指定的注解的类交给BeanFactory工厂接口实现此对象

三、注意事项及问题
1.@SpringBootApplication 描述的类为springboot项目的启动入口类
1)springboot项目的启动入口类只能有一个
2)springboot项目的启动入口类需要使用@springbootApplication注解进行描述

2.问题?
1)这个类启动会做什么事情
2)加载类(将类的信息读取到内存)-- 线程+io
3)创建字节码对象(其类型为Class文件),用于存储类的字节码信息
4)基于字节码对象获取类上的注解信息,判定此类是否要交给spring管理
5)加入是交给spring管理的对象,spring框架会创建其对象然后赋予其特性
6)基于配置文件以及springboot提供的自动配置对对象进行初始化应用

3.如何验证启动类在启动时加载了哪些类? – (借助JVM参数进行分析)
1)类加载过程分析参数: -XX:+TraceClassLoading

4.在springboot中自己写的java业务代码写到那里?如何交给spring管理
1)所有的业务代码写到src/main/java目录中启动类所在的包以及子包中
2)将这些类使用特点注解进行描述(例如:@Commpent、@Service、@Controller,…)

5.在springboot中我们自己的java业务测试代码写到那里?有什么特点
1)所有测试代码写到src/test/java目录中启动类所在包或者子包中
2)所有测试类使用@SpringBootTest注解
3)所有测试方法使用@org.junit.jupiter.api.Test注解

6.延迟加载特性(按需加载、懒加载)特性 – 暂缓对象的创建
1)优点:可以优化资源的使用
2)缺点:用时在创建可能会导致响应速度降低
3)大对象,使用少,能不加载就不加载
4)在需要延迟加载的类上使用@Lazy注解进行描述

7.作用域(Spring框架为对象提供的作用范围,对象的生命周期只能在指定范围有效)
1)优点:让对象在有效范围发挥作用,尽量控制对象的创建和销毁以保证对象的高效,低耗的运行
2)缺点:框架底层设计难度加大,应用不熟练会导致作用域冲突
3)场景:不同业务作用域的设计也不同 (例如:对象在整个项目中使用非常频繁,可以考虑单例模式)
4)实现:在需要设定作用域的类上使用@Scope注解进行描述
8.生命周期方法? (每个对象都有生命周期,但不一定每个对象都会设置生命周期方法)
1)如何理解生命周期方法?生命周期方法是在对象生命周期过程中药执行的一些方法
2)如何设计生命周期方法?spring框架中使用相关注解对象对生命周期方法进行描述
3)设计生命周期方法的目的? 对象生命周期的不同阶段执行不同业务

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值