说说 Spring Boot 项目引导与测试原理
发布日期:2021-06-29 21:04:14
浏览次数:2
分类:技术文章
本文共 1947 字,大约阅读时间需要 6 分钟。
1 引导项目
因为 Spring Boot 项目会以可执行 JAR 文件的形式来运行,所以 Spring Boot 项目会定义一个主类,主类中提供 main 方法,它会在 JAR 运行时被执行。这个主类以注解的形式绑定 Spring 框架,完成 Spring 基础配置。
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DeniroSpring5Application { public static void main(String[] args) { SpringApplication.run(DeniroSpring5Application.class, args); }}
@SpringBootApplication
注解表明这是一个 SpringBoot 应用项目。
@SpringBootApplication
注解实际上是一个组合注解:
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })public @interface SpringBootApplication { ...}
注解 | 说明 |
---|---|
@SpringBootConfiguration | 将该类声明为配置类,是 @Configuration 注解的特殊形式 。 |
@EnableAutoConfiguration | 启用 Spring Boot的自动配置 |
@ComponentScan | 启用组件扫描。这样配置了 @Component、@Controller、@Service 等注解的类,就会被 Spring 扫描到,然后将其注册为 Spring 上下文中的组件。 |
这里也顺便回顾下 Java 的元注解:
注解 | 说明 |
---|---|
@Documented | 把注解类型信息记录到 生成的 javadoc 文档中。 |
@Target(ElementType.TYPE) | 说明了Annotation所修饰的对象范围,TYPE 表示用于描述类、接口(包括注解类型) 或enum声明。 |
@Retention(RetentionPolicy.RUNTIME) | 指定注解的生命周期,RetentionPolicy.RUNTIME 表示注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在。 |
@Inherited | 如果该注解定义在类上面时,子类会自动继承此注解。该注解只有在类上使用时才会有效。 |
主类中的 main 方法,调用 SpringApplication.run(DeniroSpring5Application.class, args);
执行项目引导过程,也就是创建 Spring 的应用上下文。静态的 run() 方法有两个入参,一个是配置类,另一个是命令行参数。
2 测试项目
Spring Initializr 在创建项目的同时,为我们提供了一个基本测试类:
import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTestclass DeniroSpring5ApplicationTests { @Test void contextLoads() { }}
运行结果:
这个类中只有一个空的测试方法,虽然是空的,但会确保 Spring 应用上下文能够被正确加载。如果我们所做的修改导致 无法创建 Spring 应用上下文,那么这个测试方法就会失败。
这里使用了 org.junit.jupiter.api.Test 作为测试依赖类,这个类是 Junit 5 提供的新类。
转载地址:https://deniro.blog.csdn.net/article/details/105912744 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月27日 09时00分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C#中StringBuilder类的使用
2019-04-30
String,StringBuffer与StringBuilder的区别??
2019-04-30
用户登录安全性的简单实例分析(Cookie、加密)
2019-04-30
Cookie详解!
2019-04-30
Cookie/Session机制详解
2019-04-30
C# DES加密解密字符串
2019-04-30
C# 加密解密算法
2019-04-30
C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
2019-04-30
C#修饰符
2019-04-30
C# 修饰符 总结
2019-04-30
C#修饰符
2019-04-30
计划任务,账户密钥集不存在 错误是: 0x80090016
2019-04-30
C#中ref和out的使用小结
2019-04-30
(C#)方法参数关键字:ref、out、params详解
2021-07-03
大话C#中in,out,ref的作用和区别
2021-07-03
IEnumerator和IEnumerable是怎样使用的
2021-07-03
类变量 索引器
2021-07-03
IEnumerable和IEnumerator 详解
2021-07-03
非泛型集合类以及对应的泛型集合类【dictionary】
2021-07-03