当前位置: 首页 > 知识库问答 >
问题:

当多个概要文件不活动时,如何有条件地声明Bean?

太叔昆
2023-03-14
Profile "a" NOT loaded  
AND  
Profile "b" NOT loaded 

到目前为止,我的解决方案(有效):

@Bean
@ConditionalOnExpression("#{!environment.getProperty('spring.profiles.active').contains('a') && !environment.getProperty('spring.profiles.active').contains('b')}")
    public MyBean myBean(){/*...*/}

有没有更优雅(也更简短)的方法来解释这个条件?
特别是我想在这里去掉Spring表达式语言的用法。

共有1个答案

昌乐
2023-03-14

自从Spring 5.1.4(包含在Spring Boot 2.1.2)中以来,可以在概要字符串注释中使用概要表达式。所以:

在Spring 5.1.4(Spring Boot 2.1.2)及以上版本中,它非常简单:

@Component
@Profile("!a & !b")
public class MyComponent {}

在Spring 4.x和5.0.x中:

 类似资料:
  • 问题内容: 在我的Spring-Boot-App中,我想根据(未加载的)spring-profiles有条件地声明一个Bean。 条件: 到目前为止,我的解决方案(有效): 有没有更优雅(更短)的方式来解释这种情况? 特别是我想在这里摆脱Spring Expression Language的使用。 问题答案: 从Spring 5.1.4(Spring Boot 2.1.2中包含)开始,可以在配置文

  • 问题内容: 有没有一种方法可以有条件地声明Spring bean: 不必使用配置文件,这将很有用。我没有特定的用例,但这是我想到的。 问题答案: 你可以使用@Conditional从spring4或@ConditionalOnProperty从springBoot.。 Using Spring4 (only) 如果你不使用Spring Boot,这可能会过大。 首先,创建一个类,在其中可以访问:

  • 这篇指南的目的是教你如何书写高质量的TypeScript声明文件。 在这篇指南里,我们假设你对TypeScript已经有了基本的了解。 如果没有,请先阅读TypeScript手册 来了解一些基本知识,尤其是类型和命名空间部分。 这篇指南被分成了以下章节。 结构 结构一节将帮助你了解常见库的格式以及如何为每种格式书写正确的声明文件。 如果你在编辑一个已经存在的文件,那么你可能不需要阅读此章节。 如果

  • 我正在尝试将Spring Boot配置文件与Maven配置文件集成,但由于某些原因,总是会选择默认配置文件。 MVN清洁测试-Dspring.profiles.active=产品(工作) 日志: mvn干净测试-prod(不起作用,总是选择默认配置文件) 日志: pom。xml src/测试/资源/应用程序。属性 src/test/resources/application-dev.propert

  • 这是我运行应用程序时的清单文件,上面写着“主活动未在AndroidManifest.xml中声明” 我尝试重建,无效缓存/重启,添加 我昨天做了一个apk,直到那时它工作正常,但今天当我打开它时,它显示了这个错误。 以下是主要活动。JAVA logcat 2019-03-14 17:02:33.4925363-5363/com。基瓦尔。致命异常:AndroadCame。基瓦尔。拉格班达尔,PID:

  • 问题内容: 在Java中,你可以在一个文件中定义多个顶级类,条件是其中最多一个是公共的(请参见JLS§7.6)。参见以下示例。 是否有此技术整洁名(类似于)? JLS表示系统可能会强制执行这些二级类不能为的限制,例如,它们不能被视为程序包专用。这真的在Java实现之间有所改变吗? 例如,PublicClass.java: 问题答案: 对于这种技术,我建议的名称(在一个源文件中包括多个顶级类)将是“

  • 主要内容:CalcThirdPartyJsLib.js 文件代码:,Calc.d.ts 文件代码:,CalcTest.ts 文件代码:,CalcTest.js 文件代码:,实例TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaS

  • 我目前有警卫声明: 但是,我只想在变量时执行保护块。我想跳过保护语句,如果需要。有没有比带有返回的if语句更好的方法来做到这一点? 编辑: 如何将其简化为单个防护装置?