SpringBoot排除不需要的自动配置类

这篇具有很好参考价值的文章主要介绍了SpringBoot排除不需要的自动配置类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、排除自动配置类的方式

        1.1 使用@SpringBootApplication注解

        1.2 使用@EnableAutoConfiguration注解

        1.3 在properties、yml等配置文件中添加排除项

二、排除自动配置类之后,添加自动配置类的方式

        2.1 删除排除自动配置类的代码

        2.2 使用@Import注解,在配置类上手动导入

三、源码解析

        3.1 @SpringBootApplication注解:

        3.2 @EnableAutoConfiguration注解

        3.3 AutoConfigurationImportSelector

四、maven利用profile根据不同环境引用相应jar包

五、说明


一、排除自动配置类的方式

        1.1 使用@SpringBootApplication注解

在启动类上使用@SpringBootApplication注解的exclude或者excludeName属性

@SpringBootApplication(exclude = {RabbitAutoConfiguration.class})

@SpringBootApplication(excludeName = {"org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration"})

        1.2 使用@EnableAutoConfiguration注解

在启动类或配置类上使用@EnableAutoConfiguration注解的exclude或者excludeName属性

注意:

        不要多次配置@EnableAutoConfiguration注解,否则会被覆盖。

        如果配置了不生效,可以检查下是否在不同的配置类上重复配置了@EnableAutoConfiguration注解

@EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class})

@EnableAutoConfiguration(excludeName = {"org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration"})

        1.3 在properties、yml等配置文件中添加排除项

application.properties

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration

application.yml

spring:
	autoconfigure:
		exclude:
			- org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
			- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

二、排除自动配置类之后,添加自动配置类的方式

基础工程排除了自动配置类之后,如果某个项目需要启动自动配置类,那么有以下几种方式

        2.1 删除排除自动配置类的代码

        2.2 使用@Import注解,在配置类上手动导入

以下代码,是在配置文件里配置了tfb.rabbitmq.enabled=true之后,开启RabbitMQ的自动配置

@ConditionalOnProperty(prefix = "tfb.rabbitmq", name = "enabled", havingValue = "true")
@Configuration
@Import(RabbitAutoConfiguration.class)
public class TfbRabbitConfig {

}

SpringBoot排除不需要的自动配置类

三、源码解析

        3.1 @SpringBootApplication注解:

该注解的源码里,有@AliasFor注解,

@AliasFor(annotation = EnableAutoConfiguration.class)
Class<?>[] exclude() default {};

意思是@SpringBootApplication注解的exclude属性,引用的是@EnableAutoConfiguration注解的同名属性exclude,即作用是一样的。

@AliasFor 注解 - 程序员自由之路 - 博客园 (cnblogs.com)

SpringBoot排除不需要的自动配置类

        3.2 @EnableAutoConfiguration注解

@EnableAutoConfiguration@Import(AutoConfigurationImportSelector.class)

SpringBoot排除不需要的自动配置类

        3.3 AutoConfigurationImportSelector

        @EnableAutoConfiguration引入了AutoConfigurationImportSelector,该类的引入配置文件代码selectImports里写了如何排除指定类的方法

SpringBoot排除不需要的自动配置类

四、maven利用profile根据不同环境引用相应jar包

pom.xml里配置profile,在里面配置不同环境需要的jar包。

参考:maven根据profile变量引入或者不引入依赖,引入不同版本的依赖_lzhfdxhxm的博客-CSDN博客


    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>rabbitmq</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-amqp</artifactId>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

五、说明

        为什么不需要加载自动配置类呢?原因是基础工程提供了RabbitMQ的使用工具,但是各个项目可以根据需要启用不启用RabbitMQ。使用配置文件的属性开关方式,可以实现这个目的。

        但是,有个问题:如果项目不需要RabbitMQ,那么其实不需要引入RabbitMQ的相关依赖包,而这种方式,还是会把这些依赖包引入进去(可以用第四点说明的利用profile配置依赖信息,如果没有引入rabbitmq配置文件,那么不打包相关的依赖包)。

        更好的解决方式:将相关的代码整合到一个工程了,制作一个RabbitMQ的starter工程。如果项目需要使用RabbitMQ,那么就引入该starter工程就可以了。文章来源地址https://www.toymoban.com/news/detail-453459.html

到了这里,关于SpringBoot排除不需要的自动配置类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Linux中使用rsync进行备份时如何排除文件和目录?

    在Linux系统中,rsync是一种强大的工具,用于文件和目录的备份和同步。然而,在进行备份时,我们可能希望排除某些文件或目录,例如临时文件、日志文件或其他不需要备份的内容。本文将介绍在Linux中使用rsync进行备份时如何排除文件和目录的方法。 方法一:使用–exclud

    2024年02月07日
    浏览(29)
  • git diff对比差异时指定或排除特定的文件和目录

    你一般什么时候会用GPT? 居然会有这种话题,答案就是作为程序员的我天天在用,虽然GPT有个胡说八道的毛病,但试试总没错的,就比如今天题目中这个问题,我也是先查了GPT没好使,但给我提供了查询思路,最后在Stack Overflow上找到解决办法,记录一下 我就直接列答案了,

    2024年02月04日
    浏览(32)
  • springboot-静态资源目录的配置

    配置节点:spring.web.resources.static-locations 值为要配置的静态资源存放目录 如: 以上配置中,设置静态资源目录为src/main/resources/test/目录。 假如在test目录下存放文件test.txt,程序启动后,便能通过浏览器访问ip:port/test.txt访问文件。 新建WebMvcConfig类,继承WebMvcConfigurationSupport类

    2024年02月16日
    浏览(31)
  • 如何使用ES做简单的时间条件过滤+模糊查询+精确匹配+关键字排除,查询 elasticsearch查询结果包含或排除某些字段、_source查询出需要的属性名称

    目录 一、时间条件过滤+模糊查询+精确匹配+排除 1. 查询出包含 log_geo 的数据 “wildcard”: { “message”: “log_geo” } 2. 查询某个时间段的数据 3. 条件查询与条件排除数据 4. from 表示起始的记录的ID 5. size 表示显示的记录数 6.sort排序 desc降序、asc升序  7.should查询在mysql中

    2024年01月18日
    浏览(54)
  • message: 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 `miniprogramRoot` 目录内,或配置 project.config.json 的 packNpmMa

    问题 :message: 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 miniprogramRoot 目录内,或配置 project.config.json 的 packNpmManually 和 packNpmRelationList 进行构建; 描述 :这是一个使用 TypeScript+Less 的小程序项目模板,并且该模板安装了 lin-ui 作为UI组件库,安装完毕后使用

    2024年02月13日
    浏览(32)
  • springboot 项目里面使用nacos ,不需要配置nacos 的用户名密码嘛

    当在Spring Boot项目中使用Nacos时,如果您不需要配置Nacos的用户名和密码,可以将username和password属性留空或不配置。这样,Nacos客户端将以匿名方式连接到Nacos服务器。 在bootstrap.yml或application.yml中配置Nacos的用户名和密码时,您可以将其留空或不填写: 通过将username和password属

    2024年02月14日
    浏览(28)
  • Springboot项目排除Bean的方法

            在最近工作中,相关业务代码需要引用一个工具包。原来的同事在工具包中,封装了Spring AOP切面的Bean,但是这样的工具包非常不友好,工具包不应该有这些特殊的处理。有了这些特殊的处理,引用方也要特殊处理。         因为工具包中封装了Spring切面bean,我首先

    2024年02月15日
    浏览(30)
  • SpringBoot返回响应排除为 null 的字段

    可以通过全局配置,使返回响应中为 null 的字段,不在出现在返回结果中。 注意:这样配置,使得返回响应包含的字段随请求结果变化,响应到底包含哪些字段不直观;除非业务明确有这种需求,否则不建议配置。 PS:Gson将Bean转为JSON时,默认会排除null字段。 添加配置前:

    2024年02月11日
    浏览(31)
  • SpringBoot 自动配置--常用配置

    😀前言 本篇博文是关于SpringBoot 自动配置的一些分享,希望能够帮助到您😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的

    2024年02月14日
    浏览(22)
  • 【SpringBoot】SpringBoot的自动配置源码解析

    SpringBoot相对于SSM来说,主要的优点就是简化了配置,不再需要像SSM哪有写一堆的XML配置,这些XML配置在大项目上会成为一种累赘,使得后期项目难以维护。 SpringBoot的出现,使得开发者不再关注于配置,能够更加专注于业务的开发,这得益于SpringBoot的自动配置。 SpringBoot的自

    2024年02月16日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包