码迷,mamicode.com
首页 > 编程语言 > 详细

【SpringBoot】SpringBoot配置与单元测试(二)

时间:2019-12-05 01:19:24      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:filters   导入   conf   nta   ati   sse   j2ee   otc   目的   

  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、运行测试类测试方法,运行结果如下:

    技术图片

 

 

  

【SpringBoot】SpringBoot配置与单元测试(二)

标签:filters   导入   conf   nta   ati   sse   j2ee   otc   目的   

原文地址:https://www.cnblogs.com/h--d/p/11986555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!