SpringBoot项目创建参考【SpringBoot】SpringBoot快速入门(一)
本文介绍SpringBoot项目的POM文件、配置与单元测试
POM文件
1、SpringBoot的pom文件中,看到都依赖一个springboot的父项目,如下
1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring‐boot‐starter‐parent</artifactId> 4 <version>2.1.8.RELEASE</version> 5 </parent>
而springboot的父项目又有一个父项目,此项目才是真正管理Spring Boot应用里面的所有依赖版本
1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-dependencies</artifactId> 4 <version>2.1.8.RELEASE</version> 5 <relativePath>../../spring-boot-dependencies</relativePath> 6 </parent>
以后导入依赖默认是不需要写版本(没有在dependencies里面管理的依赖自然需要声明版本号)
2、SpringBoot的启动器
spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件
1 <dependencies> 2 <!-- 不需要写版本号,版本号依赖父项目(spring-boot-starter-parent)管理 --> 3 <!-- SpringBoot 将所有的功能场景抽取出来,做成一个个starter(启动器), 4 只需要在项目中引入这些starter相关场景的所有依赖都会导入进来,要用什么功能就导入什么启动器--> 5 <dependency> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-web</artifactId> 8 </dependency> 9 </dependencies>
主程序类,主入口类
1、主程序类,入口类
1 /** 2 * @SpringBootApplication 用来标注一个主程序,说明这是一个Spring Boot应用 3 */ 4 @SpringBootApplication 5 public class Application { 6 7 public static void main(String[] args) { 8 9 // Spring应用启动 10 SpringApplication.run(Application.class, args); 11 } 12 }
2、SpringBoot注解
a、@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,
SpringBoot 就应该运行这个类的main方法来启动SpringBoot应用;
1 @Target(ElementType.TYPE) 2 @Retention(RetentionPolicy.RUNTIME) 3 @Documented 4 @Inherited 5 @SpringBootConfiguration 6 @EnableAutoConfiguration 7 @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), 8 @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) 9 public @interface SpringBootApplication {
b、@SpringBootApplication > @SpringBootConfiguration: Spring Boot的配置类;标注在某个类上,表示这是一个Spring Boot的配置类;
c、@SpringBootApplication > @SpringBootConfiguration > @Configuration: 配置类上来标注这个注解; 配置类 ----- 配置文件; 配置类也是容器中的一个组件;@Component
d、@SpringBootApplication > @EnableAutoConfiguration: 开启自动配置功能; Spring配置的东西,SpringBoot开启自动配置功能;这样自动配置才能生效;
1 @Target(ElementType.TYPE) 2 @Retention(RetentionPolicy.RUNTIME) 3 @Documented 4 @Inherited 5 @AutoConfigurationPackage 6 @Import(AutoConfigurationImportSelector.class) 7 public @interface EnableAutoConfiguration {
e、@SpringBootApplication > @EnableAutoConfiguration > @AutoConfigurationPackage: 自动配置包
f、@SpringBootApplication > @EnableAutoConfiguration > @AutoConfigurationPackage > @Import(AutoConfigurationPackages.Registrar.class): Spring的底层注解@Import,给容器中导入一个组件;导入的组件由 AutoConfigurationPackages.Registrar.class;
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;
g、@SpringBootApplication > @EnableAutoConfiguration > @Import(EnableAutoConfigurationImportSelector.class); 选择要导入容器的组件,
EnableAutoConfigurationImportSelector: 导入哪些组件的选择器; 将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;
会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件, 并配置好这些组件;
有了自动配置类,免去了手动编写配置注入功能组件等的工作;SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);
Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值
J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-2.1.8.RELEASE.jar;
SpringBoot单元测试
1、引入SpringBoot测试依赖
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-test</artifactId> 4 <scope>test</scope> 5 </dependency>
2、编辑测试类。TestSpringbootApplicationTests.java
1 package com.test.springboot; 2 3 import org.junit.Test; 4 import org.junit.runner.RunWith; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.boot.test.context.SpringBootTest; 7 import org.springframework.context.ApplicationContext; 8 import org.springframework.test.context.junit4.SpringRunner; 9 10 /** 11 * SpringBoot单元测试 12 * 13 * 可以在测试期间很方便的类似编码一样的自动注入 14 */ 15 @RunWith(SpringRunner.class) 16 @SpringBootTest 17 public class TestSpringbootApplicationTests { 18 19 @Autowired 20 ApplicationContext context; 21 22 @Test 23 public void contextLoads(){ 24 boolean b = context.containsBean("helloController"); 25 System.out.println(b); 26 } 27 28 29 }
3、运行测试类测试方法,运行结果如下:
原文地址:https://www.cnblogs.com/h--d/p/11986555.html