当前位置: 首页 > news >正文

山东网站排名优化公司网站建设哪

山东网站排名优化公司,网站建设哪,容桂低价网站建设,wordpress高级套餐当我们想要封装一些自定义功能给别人使用的时候,创建Spring Boot Starter的形式是最好的实现方式。如果您还不会构建自己的Spring Boot Starter的话,本文将带你一起创建一个自己的Spring Boot Starter。 快速入门 创建一个新的 Maven 项目。第三方封装的…

当我们想要封装一些自定义功能给别人使用的时候,创建Spring Boot Starter的形式是最好的实现方式。如果您还不会构建自己的Spring Boot Starter的话,本文将带你一起创建一个自己的Spring Boot Starter。

快速入门

  1. 创建一个新的 Maven 项目。第三方封装的命名格式是 xxx-spring-boot-starter ,例如:didispace-spring-boot-starter

  2. 编辑pom.xml,添加spring-boot-autoconfigurespring-boot-starter依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency>
</dependencies>

  1. 创建一个用 @Configuration 注释的配置类,在这里您可以使用@Bean来创建使用@ConditionalOnClass@ConditionalOnMissingBean等条件注释来控制何时应用配置。

@Configuration
@ConditionalOnClass(MyFeature.class)
@ConditionalOnProperty(prefix = "myfeature", name = "enabled", matchIfMissing = true)
public class MyFeatureAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic MyFeature myFeature() {return new MyFeature();}
}

  1. src/main/resources/META-INF目录下创建spring.factories文件,并在org.springframework.boot.autoconfigure.EnableAutoConfiguration关键字下列出您的自动配置类,比如:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.didispace.myfeature.MyFeatureAutoConfiguration

该配置的作用是让Spring Boot应用在引入您自定义Starter的时候可以自动这里的配置类。

注意:Spring Boot 2.7开始,不再推荐使用spring.factories,而是改用/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,文件内容直接放需要自动加载配置类路径即可。这个变更具体可见之前的这篇文章:《Spring Boot 2.7开始spring.factories不推荐使用了》

验证测试

在制作Spring Boot Starter的时候,一定记得使用单元测试来验证和确保自动化配置类在任何条件逻辑在启动器下能够按照正确的预期运行。

创建单元测试

使用@SpringBootTest加载完整的应用程序上下文,并验证启动程序是否正确配置了 Bean 和属性。

@SpringBootTest(classes = TestApplication.class)
public class MyStarterAutoConfigurationTest {@Autowired(required = false)private MyService myService;@Testpublic void testMyServiceAutoConfigured() {assertNotNull(myService, "MyService should be auto-configured");}
}

覆盖不同的配置

如果有不同的配置方案,那么还需要使用@TestPropertySource@DynamicPropertySource覆盖属性以测试不同配置下的情况。

或者也可以直接简单的通过@SpringBootTest中的属性来配置,比如下面这样:

@SpringBootTest(properties = "my.starter.custom-property=customValue")
public class MyStarterPropertiesTest {@Value("${my.starter.custom-property}")private String customProperty;@Testpublic void testPropertyOverride() {assertEquals("customValue", customProperty, "Custom property should be overridden by @SpringBootTest");}
}

覆盖@Conditional的不同分支

如果您的启动器包含条件配置,比如:@ConditionalOnProperty@ConditionalOnClass等注解,那么就必须编写测试来覆盖所有条件以验证是否已正确。

比如下面这样:

@SpringBootTest(classes = {TestApplication.class, MyConditionalConfiguration.class})
@ConditionalOnProperty(name = "my.starter.enable", havingValue = "true")
public class MyStarterConditionalTest {@Autowiredprivate ApplicationContext context;@Testpublic void conditionalBeanNotLoadedWhenPropertyIsFalse() {assertFalse(context.containsBean("conditionalBean"),"Conditional bean should not be loaded when 'my.starter.enable' is false");}
}

为了覆盖不同的条件分支,我们通常还需要使用@TestConfiguration注解来有选择地启用或禁用某些自动配置。

小结

本文介绍了两个Spring Boot的进阶内容:

  1. 如何创建 Spring Boot Starter

  2. 如何为 Spring Boot Starter 提供单元测试

文章转载自:程序猿DD

原文链接:https://www.cnblogs.com/didispace/p/18037231

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

http://www.yayakq.cn/news/378197/

相关文章:

  • python代码网站wordpress 4.3.9 漏洞
  • wordpress手机版菜单苏州seo关键词优化软件
  • 北京网站设计公司有哪些南京小程序开发哪家好
  • 织梦网站建设培训wordpress注册邮件无法打开
  • 商城网站的开发怎么做网站分类有哪些
  • 初中校园网站建设制度四平建设局网站
  • 海外微网站建设北京通网站建设价格
  • 青海制作网站多少钱平顶山股票配资网站建设
  • 搭建一个影视网站市场营销计划方案
  • 建站做网站自媒体平台注册入口
  • 用meteor框架做的微博网站网站开发用什么编程语言
  • 中国能源建设股份有限公司新网站重庆在线开放平台
  • 城市建设厅官方网站vpn免流网站建设
  • 网站服务器租用价格怎么算整改网站建设情况
  • php网站建设设计制作方案三亚百度推广公司电话
  • 巩义推广网站哪家好公司怎么注册邮箱帐号
  • 织梦商城网站模板免费下载山东济南seo整站优化公司
  • 湖北省住房部城乡建设厅网站首页软文大全800字
  • 学建设网站广州发际体育用品有限公司
  • 炫酷一些的网站制作相册的软件app免费
  • 制作网站 公司简介tiktok国际版网页入口
  • 品牌自适应网站建设网站建设涉及的标准
  • 桓台网站制作中信建设有限责任公司龙芳
  • 阿里巴巴网站备案青州网页定制
  • 怎么建设一个区块链资讯网站wordpress install.php 乱码
  • 网站建设实训的意义网站js代码不显示
  • 西安企业做网站微信看视频打赏网站建设
  • 有没有专门做线下活动的网站登录门户网站
  • 2017优秀网站设计电子商务平台在家能干吗
  • 高端网站开发公司耐克1网站建设的总体目标