代码之家  ›  专栏  ›  技术社区  ›  amseager

如何在`spring.autoconfig.exclude`属性列表中禁用“排除”

  •  0
  • amseager  · 技术社区  · 3 年前

    假设我的衣服里有这个 application.yml 文件:

    spring:
      autoconfigure:
        exclude:
          - org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
          - ..... <other exclusions>
    

    然后,在 application-redis.yml 配置文件我想重新启用此自动配置。

    除了复制整个列表而不需要一个条目之外,我还能做什么?

    请不要建议基于代码修改的解决方案(如特定注释等-我只需要使用属性)。此外,我不能在最初启用这个自动配置,并在禁用的地方添加某种“默认”配置文件。

    0 回复  |  直到 3 年前
        1
  •  2
  •   xerx593    3 年前

    配置文件/导入方法

    1. 创建(自定义,自动扫描,可能为空) @Configuration
    2. 用注释 @Profile("redis")
    3. 用附加注释 @Import(RedisAutoConfiguration.class)

    完成!看起来像:

    package com.my.package;
    import org.springframework.context.annotation.*;
    import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
    
    @Configuration
    @Profile("redis")
    @Import(RedisAutoConfiguration.class)
    // config more here...
    class MyRedisConfig {
      // ..or here
    }
    

    重新导入 application.yaml -排除(仅适用于RedicAutoConfig类), 激活“redis”配置文件时

    不确定这是否比复制&粘贴方法,但听起来完全是什么,配置+导入+配置文件是“专为”设计的!)

    如果 @配置 类标记为 @Profile ,所有 @Bean 方法和 @Import 除非一个或多个指定的配置文件处于活动状态,否则将绕过与该类关联的注释