打造你的Spring Boot利器:简化开发,提升效率的秘密武器揭秘!

在Spring Boot的广阔世界里,我们总是追求更简单、更高效的开发体验。本文将带你踏入一个充满惊喜的领域,通过一系列实战案例,揭示Spring Boot中如何定制化开发,为你的项目注入更多灵活性与便捷性。让我们一同探索,提升开发效率的新契机。

接下来我们带着三个问题去探讨一下Springboot中的自定义Starter。

一、自定义Starter是什么?

在SpringBoot中,自定义 Starter 是一种强大的机制,它旨在简化和标准化依赖库的集成。简而言之,一个 Starter 就是一个预配置的、可共享的 Spring Boot 模块,它可以为特定的功能或服务提供一组默认的配置和依赖。

通过自定义 Starter,你可以将一系列常用的配置、依赖和功能捆绑到一个单独的模块中,然后通过简单引入该Starter,就能在项目中启用这些功能,而无需手动配置大量繁琐的细节。

这种机制不仅提高了代码的可维护性和可重用性,还使得团队内部能够更加一致地构建项目,遵循相同的最佳实践和约定。总体而言,SpringBoot 的自定义 Starter 为开发者提供了一种方便而强大的方式来扩展和定制项目的功能集。

二、为什么需要自定义?

自定义 Starter 在 Spring Boot 中的引入是为了提高开发效率、降低配置复杂性、促进团队内部的一致性。 

主要体现为如下几点:

  • 简化配置:自定义Starter可以封装一系列常用的配置,使得开发者在使用某项功能时只需引入相应的Starter,而无需手动配置大量细节。
  • 提高复用率:Starter 将一组相关的功能或服务打包在一起,使得这些功能能够被不同的项目轻松地重复利用,提高了代码的可维护性和可复用性。
  • 标准化开发:Starter 的引入可以帮助团队内部建立一致的开发标准和最佳实践,减少项目中个体开发者的差异,降低协作的成本

三、如何去自定义?

Springboot启动时会对每一个Starter中的classpath中去找resources/META-INF/spring.factories文件,将其里面的配置类自动注入到Spring容器中,同时根据相关的@ConditionalOnxxx一系列注解进行自动配置。

3.1 新建Maven项目编写POM文件

使用IDEA创建一个MAVEN项目,然后在pom文件中导入相关依赖的包。

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starters</artifactId>
	<version>2.2.8.RELEASE</version>
</parent>

<properties>
	<maven.compiler.source>8</maven.compiler.source>
	<maven.compiler.target>8</maven.compiler.target>
</properties>

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-configuration-processor</artifactId>
		<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-autoconfigure</artifactId>
	</dependency>
</dependencies>

3.2 编写动态属性配置类 

创建动态属性配置类MyProperties,将我们所需要传递的属性编写到该类里面,如:我们需要动态去控制是否生效的flag属性,同时在类上面标注@ConfigurationProperties与配置文件当中的属性相对应。

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "my.demo")
public class MyProperties {
    
    private String name;
    private boolean flag;
    
    public boolean isFlag() {
        return flag;
    }
    
    public void setFlag(boolean flag){
        this.flag=flag;
    }
    
    public String getName(){
        return name;
    }
    
    public void setName(String name){
        this.name=name;
    }
}

3.3 编写配置类 

编写好我们的自动配置类,也整个过程中最重要的环节,通过@EnableConfigurationProperties注解将我们自定义的动态属性配置类加入,然后使用前面的所讲的条件注解@ConditionOnProperty来控制是否启用。

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(MyProperties.class)
@ConditionalOnProperty(prefix = "my.demo", name = "flag", havingValue = "true")
public class MyAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public MyService myService() {
        MyService myService = new MyService();
        myService.sayHello();
        return myService;
    }
}

3.4 添加factories文件 

在项目的Resource目录下创建META_INF/spring.factories文件将我们写好的自动配置类MyAutoConfiguration写入文件中,通过SPI的机制来实现相关功能。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.demo.MyAutoConfiguration

3.5 编译打包

最后一步,通过maven打成jar包取好名字,可以直接在本地使用或者上传的私服等平台直接使用,这里列举一下本地如何引入。

<dependency>
	<groupId>com.lsj</groupId>
	<artifactId>my-starter-spring-boot-starter</artifactId>
	<scope>system</scope>
	<systemPath>${project.basedir}/src/main/resources/lib/my-starter-spring-boot-starter-1.0-SNAPSHOT.jar</systemPath>
	<version>1.1</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值