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

  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

时间: 2024-11-08 15:40:53

【SpringBoot】SpringBoot配置与单元测试(二)的相关文章

springboot启动配置原理之二(运行run方法)

public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; FailureAnalyzers analyzers = null; configureHeadlessProperty(); //获取SpringApplication

补习系列(10)-springboot 之配置读取

目录 简介 一.配置样例 二.如何注入配置 1. 缺省配置文件 2. 使用注解 3. 启动参数 还有.. 三.如何读取配置 @Value 注解 Environment 接口 @ConfigurationProperties 注解 四.不同环境中的配置 1. 区别开发.测试.发布环境 2. 声明多配置文件 参考文档 简介 在早前的博客中曾经写过 Spring 程序通过 Bean 映射实现配置信息的读取. 在SpringBoot 框架中读取配置的方式变得非常多样,这导致读者在搜寻资料时反而容易迷糊.

SpringBoot读取配置值的方式

SpringBoot读取配置值的方式 方法一: @Value注解的方式取值 设定appliction.properties的配置信息 xiaoming.sex=boy xiaoming.age=18 xiaoming.score=98 使用@Value取值 @RestController public class PersonController { @Value("${xiaoming.sex}") private String sex; @Value("${xiaomin

助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoo

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接如何分析SpringBoot源码模块及结构?--SpringBoot源码(二) 上一篇分析了SpringBoot源码结构及各个模块pom之间的关系后,那么此篇开始就开始解开SpringBoot新特性之一--自动配置的神秘面纱了.因为SpringBoot自动配置原理是基于其大量的条件注解ConditionalOnXXX,因此,本节我们先来撸下Spring的条件注解的相关源码. 2 SpringBoot的派生条件

SpringBoot - yaml配置注入

一.yaml语法 ① 配置文件 SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的 application.properties 语法结构 :key=value application.yml 语法结构 :key:空格 value 配置文件的作用 :修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了: 比如我们可以在配置文件中修改Tomcat 默认启动的端口号!测试一下! server.port=8081 ② yaml概述 YAML是

SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页

SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了.全部自动实现. 话不多说,直接上代码: 第一步pom文件配置添加jar: <!-- mybatis的分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>

SpringBoot自动配置原理

SpringBoot自动配置主要通过@EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties或者@ConfigurationProperties 等几个注解来进行自动配置完成的. @EnableAutoConfiguration开启自动配置,主要作用就是调用Spring-Core包里的loadFactoryNames(),将autoconfig 包里的已经写好的自动配置加载进来. @Conditional条件注解

springboot自动配置

springboot是在spring基础上的一次跃迁,是约定先于配置的完美实践. 最近在学习springboot相关内容,看到自动配置这个知识点时,着实有些困惑,网上大多博客多介绍何为springboot自动配置及其实现原理,读完依然还有些云遮雾绕. 鉴于现今我浅薄的spring知识,并不深刻知道springboot自动配置相较于spring的原始配置之间究竟有何不同,遂遍历多篇相关博客并请教大佬,才堪堪在逻辑上对二者之区别略有知晓. 我想从spring之XML配置到spring之注解配置后至s

SpringBoot控制层实现单元测试

package com.springboot.demo.controller;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.http.MediaType;import org.springframework.test