目前SpringBoot框架真的深受广大开发者喜爱,毕竟它最大的特点就是:快速构建基于Spring的应用程序的框架,而且它提供了各种默认的功能和配置,可以让开发者快速搭建应用程序的基础结构。

但是,当我们需要自定义一些配置时,我们就需要使用自定义自动配置。今天一定让大家深刻体验干货知识点,全程带有代码案例直接说明哦,一定不要错过哦!

1.自动配置类

首先我们要学习自动配置,一定要清楚自动配置类是什么,老话说得好,先走后跑嘛。

所以大家一定要记住技术自动配置类是SpringBoot中非常重要的一部分。 也就是说,通过自动配置,SpringBoot就可以根据应用程序的依赖关系自动配置应用程序所需的所有组件。如果我们想要自定义自己的自动配置,首先我们就需要创建一个类,并使用@Configuration和@ConditionalOnClass注解将其标记为自动配置类。例如,我们可以创建一个名为MyAutoConfiguration的类,并在其中添加以下注解:

@Configuration
@ConditionalOnClass(MyService.class)
public class MyAutoConfiguration {
// 自定义配置代码
}

大家可以看到,在上述的代码中我们定义了一个MyAutoConfiguration类,并使用@Configuration注解将其标记为配置类。我们还使用@ConditionalOnClass注解来指定当MyService类存在时,才会创建该自动配置类。这也就意味着,只有当我们的应用程序中存在MyService类时,才会自动应用我们的自定义自动配置。

所以自定义自动配置的好处在于,我们可以根据自己的需求来自定义应用程序的配置。例如,我们可以定义自己的数据源,或者添加自己的拦截器。但是,自定义配置的时候,是需要自定义属性来打辅助的哦,大家别着急,让我们继续来看看吧!

2.自定义属性

通过上述我们了解了什么是自定义配置,那么大家要清楚在自定义自动配置时,我们经常需要使用自定义属性来配置应用程序。我们可以通过使用@ConfigurationProperties注解来实现自定义属性。例如,我们可以创建一个名为MyProperties的类,并在其中添加以下注解:

在上面的代码中,我们定义了一个MyProperties类,并使用@ConfigurationProperties注解来指定该类的属性前缀为my。这意味着,我们可以在应用程序的application.properties文件中使用my.name和my.version属性来配置MyProperties类的属性值。

自定义属性的好处在于,我们可以根据自己的需求来配置应用程序的属性。例如,我们可以定义自己的数据库连接池大小,或者定义自己的日志级别。大家一定要认真练习,活学活用哦!

3.自定义Starter

好啦,学习了自动配置和自动属性之后,让我们来看看什么是自定义Starter吧?

其实,自定义Starter是SpringBoot中非常重要的一部分。Starter是一组依赖项的集合,它们一起提供了一组功能。例如,SpringBoot提供了一个名为spring-boot-starter-web的Starter,它包括了所有构建Web应用程序所需的依赖项。我们可以通过创建一个自定义的Starter来打包我们的自动配置类和自定义属性。要创建自定义Starter,我们需要创建一个名为spring-boot-starter-{name}的Maven项目,并在其中添加以下依赖:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>{your-group-id}</groupId>
<artifactId>{your-artifact-id}</artifactId>
<version>{your-version}</version>
</dependency>
</dependencies>

其中,{your-group-id}、{your-artifact-id}和{your-version}分别为你的自动配置类的Maven坐标。

自定义Starter的好处在于,我们可以将所有自定义配置打包成一个单独的依赖项,并将其添加到应用程序中。这样,我们就可以将自己的应用程序打包成一个可执行的Jar文件,而不必担心依赖项的问题哦。

介绍完之后肯定有很多朋友好奇如何使用自定义Starter,那么接下来就带大家来了解一些关于自定义Starter的使用吧。

4. 在应用程序中使用自定义Starter

在Spring框架中,Starter是一种约定俗成的方式,用于自动配置应用程序。当我们引入一个Starter依赖时,Spring会根据Starter中的自动配置类自动配置应用程序,接下来大家就跟我一起来看看如何使用自定义Starter来自动配置应用程序吧。

4.1 创建自定义Starter

要创建自定义Starter,我们需要创建一个Maven项目,并将其打包为一个Spring Boot Starter。在Starter项目中,我们需要创建以下几个文件:

自动配置类: 这个类中包含了Spring Boot应用程序的自动配置逻辑。我们需要在这个类中定义一些Bean,以及它们的依赖关系。

Spring.factories文件: 这个文件中列出了所有的自动配置类。Spring Boot会自动加载这个文件,并将其中的自动配置类与应用程序联合使用。

pom.xml文件: 这个文件中列出了Starter的依赖关系。

下面是一个简单的自动配置类的例子:


@Configuration
public class MyAutoConfiguration { @Bean
public MyBean myBean() {
return new MyBean();
} }

4.2 引入自定义Starter

要引入自定义Starter,我们需要在应用程序的pom.xml文件中添加Starter依赖关系。例如,如果我们有一个名为"my-spring-boot-starter"的Starter项目,我们可以在应用程序的pom.xml文件中添加以下依赖项:


<dependency>
<groupId>com.example</groupId>
<artifactId>my-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>

当我们添加这个依赖项时,Spring Boot会自动加载Starter中的自动配置类,并根据这些类自动配置应用程序。

4.3 使用自定义Starter

一旦我们引入了自定义Starter,我们就可以使用其中定义的Bean了。例如,如果我们在自定义Starter中定义了一个名为"MyBean"的Bean,我们可以在应用程序中使用以下代码来获取它:

@Autowired
private MyBean myBean;

在这个例子中,Spring会自动注入"MyBean",并将其添加到应用程序的上下文中。

上述就是如何创建、引入和使用自定义Spring Boot Starter啦,大家都知道通过使用自定义Starter,我们可以减少应用程序配置的重复性工作,并提高应用程序的可维护性和可扩展性。所以希望上述内容可以对大家有所帮助哦!

说到这里,大家清楚SpringBoot自动配置优先级吗?如果大家感兴趣的话,就继续向下看吧!

5. SpringBoot自动配置优先级

在SpringBoot应用程序中,自动配置是一个强大的特性,它可以自动配置应用程序的各个方面,从数据源到Web安全性等。在默认情况下,SpringBoot会自动配置许多参数,但是当有多个自动配置类时,SpringBoot需要确定哪个自动配置类应该优先使用。接下来将跟大家一起探讨SpringBoot自动配置的优先级以及如何控制它。

5.1 SpringBoot自动配置的优先级

SpringBoot自动配置的优先级是根据类路径中的jar包顺序来决定的。具体来说,当SpringBoot应用程序启动时,SpringBoot会检查类路径中所有可用的jar包,并按照以下顺序加载自动配置类:

● 项目本身的jar包

● 项目依赖的jar包

● 第三方jar包

这就意味着,如果项目本身包含自动配置类,那么它将比依赖的jar包中的自动配置类优先加载。

5.2 控制自动配置的优先级

如果您需要控制SpringBoot自动配置的优先级,可以通过使用@AutoConfigureOrder注解来实现。该注解允许您指定自动配置类的顺序。数字越小的自动配置类优先级越高。

以下是一个使用@AutoConfigureOrder注解的示例:

@Configuration
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
public class MyAutoConfiguration {
//自动配置代码
}

在上面的示例中,我们使用@AutoConfigureOrder注解将MyAutoConfiguration类的优先级设置为最高优先级。

5.3 示例

假设我们有两个自动配置类:MyAutoConfiguration1MyAutoConfiguration2,我们想要确保MyAutoConfiguration1的优先级高于MyAutoConfiguration2。我们可以使用@AutoConfigureOrder注解来控制它们的优先级。以下是代码示例:

5.3.1 MyAutoConfiguration1

@Configuration
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
public class MyAutoConfiguration1 {
//自动配置代码
}

5.3.2 MyAutoConfiguration2

@Configuration
@AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE)
public class MyAutoConfiguration2 {
//自动配置代码
}

在上面的示例中,我们使用@AutoConfigureOrder注解将MyAutoConfiguration1的优先级设置为最高优先级,将MyAutoConfiguration2的优先级设置为最低优先级。

6. 总结

其实,在SpringBoot应用程序中,自动配置是一个强大的特性,它可以自动配置应用程序的各个方面。 在默认情况下,SpringBoot会根据类路径中的jar包顺序来决定自动配置的优先级。如果大家需要控制自动配置的优先级,就可以使用@AutoConfigureOrder注解来实现哦。

而且通过自定义自动配置,我们可以根据自己的需求来配置应用程序,从而使应用程序更加灵活、高效。所以希望上述内容可以帮助大家更深入地了解SpringBoot自定义自动配置的知识,从而更好地应用它们到自己的项目中哦。


5步带你玩转SpringBoot自定义自动配置那些知识点的更多相关文章

  1. SpringBoot——自定义自动配置与起步依赖

    SpringBoot--自定义自动配置与起步依赖 SpringBoot为我们提供了灵活强大的自动配置与起步依赖功能,接下来我们参考其实现原理,实现专属于我们自己的自动配置与起步依赖. 不仅如此,我们对 ...

  2. Spring boot运行原理-自定义自动配置类

    在前面SpringBoot的文章中介绍了SpringBoot的基本配置,今天我们将给大家讲一讲SpringBoot的运行原理,然后根据原理我们自定义一个starter pom. 本章对于后续继续学习S ...

  3. 关于SpringBoot的自动配置和启动过程

    一.简介 Spring Boot简化了Spring应用的开发,采用约定大于配置的思想,去繁从简,很方便就能构建一个独立的.产品级别的应用. 1.传统J2EE开发的缺点 开发笨重.配置繁多复杂.开发效率 ...

  4. 面试题: SpringBoot 的自动配置原理

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 3.Spring Boot 的自动配置原理 package com.mmall; import org. ...

  5. Springboot MVC 自动配置

    Springboot MVC 自动配置 官方文档阅读 https://docs.spring.io/spring-boot/docs/current/reference/html/web.html#w ...

  6. SpringBoot的自动配置

    1.根据条件来装配bean,SpringBoot的自动配置,根据条件进行自动配置. 首先创建一个接口,如下所示: package com.bie.encoding; /** * * @Descript ...

  7. springboot(六)自动配置原理和@Conditional

    官方参考的配置属性:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#common-appl ...

  8. springboot mvc自动配置(一)自动配置DispatcherServlet和DispatcherServletRegistry

    所有文章 https://www.cnblogs.com/lay2017/p/11775787.html 正文 springboot的自动配置基于SPI机制,实现自动配置的核心要点就是添加一个自动配置 ...

  9. springboot mvc自动配置(三)初始化mvc的组件

    所有文章 https://www.cnblogs.com/lay2017/p/11775787.html 正文 在springboot mvc自动配置的时候,获得了DispatcherServlet和 ...

  10. spring-boot spring-MVC自动配置

    Spring MVC auto-configuration Spring Boot 自动配置好了SpringMVC 以下是SpringBoot对SpringMVC的默认配置:==(WebMvcAuto ...

随机推荐

  1. 一文带你弄懂 Maven 拉包原理

    业务需求开发的时候,我们总是会遇到拉不到依赖包的情况.此时如果不清楚 Maven 拉取依赖包的原理,那么很可能找不到问题所在.今天树哥就带大家了解下 Maven 拉包的原理,让你在遇到问题的时候能快速 ...

  2. kubernetes(k8s)部署 Metrics Server 资源

    资源使用指标,例如容器 CPU 和内存使用率,可通过 Metrics API 在 Kubernetes 中获得.这些指标可以直接被用户访问,比如使用 kubectl top 命令行,或者被集群中的控制 ...

  3. 扯下@EventListener这个注解的神秘面纱。

    你好呀,我是歪歪. 前段时间看到同事在项目里面使用了一个叫做 @EventListener 的注解. 在这之前,我知道这个注解的用法和想要达到的目的,但是也仅限于此,其内部工作原理对我来说是一个黑盒, ...

  4. DG:windows密码文件

    问题描述:搭建DG,找不到密码文件的位置,就给备库重新生成了一个密码文件,传到了备库,但是拉到了备库以后,恢复过程中,trace日志在报错,后来才知道windows下的密码文件跟linux平台下的面文 ...

  5. 企事业单位通用版招采系统(SRM),招采全过程闭环流程

    前言 采购供应商管理的难点:沟通耗费精力,业务协同难,管控混乱.优质的供应商,是直接能够影响采购成本和企业采购战略落地的,而供应商管理的终极路径是建立企业自己的供应商私域流量池. 一.供应商管理 1. ...

  6. ubuntu搭建深度学习环境

    安装vscode 方法一: 依次输入如下命令 1.sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make 2.sudo apt-get updat ...

  7. 开心档之MySQL 管理

    MySQL 管理 启动及关闭 MySQL 服务器 Windows 系统下 在 Windows 系统下,打开命令窗口(cmd),进入 MySQL 安装目录的 bin 目录. 启动: cd c:/mysq ...

  8. ERROR: libfdk_aac not found和ERROR: libmp3lame &gt;= 3.98.3 not dound

    ERROR: libfdk_aac not found和ERROR: libmp3lame >= 3.98.3 not dound 编译ffmepg时出现这两个错误或者有时候需要x264编码的时 ...

  9. Appweb+ESP学习笔记

    Appweb+ESP学习笔记 1.Appweb简介        Appweb HTTP Web服务器是最快的小型Web服务器.这是一个高性能,紧凑的嵌入式网络服务器,具有模块化,安全的核心.它支持广 ...

  10. Locust 任务类介绍

    前言: 任务:简单的理解就是,你想要你脚本的虚拟用户去做哪些事,比如请求某一个接口,或者执行某一个事件 用户:可以理解为,执这个任务的实例主体,或者在locust 中,也可以认为是一群蝗虫 一.Tas ...