Spring Boot 自动配置顺序

2024-01-22

我想创建一个 Spring Boot 自动配置类(有条件地)创建单个 beanA。然而,挑战在于,这个 bean 必须在另一个 bean 之前创建B在 Spring Boot 的默认自动配置类之一中创建。豆子B不依赖于A.

我的第一次尝试是使用@AutoConfigureBefore。这并没有按照我的预期和判断进行这条评论 https://stackoverflow.com/questions/27667516/spring-boot-autoconfiguration-order#comment43752147_27667516作者:Dave Syer 不应该。

一些背景:前面提到的 beanA改变 Mongo 数据库并且这必须发生在之前MongoTemplate被建造。


事实证明,我想要的是动态地创建实例B取决于A。这可以通过使用来实现BeanFactoryPostProcessor to 改变bean定义 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-extension-factory-postprocessors of B beans.

public class DependsOnPostProcessor implements BeanFactoryPostProcessor {

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        String[] beanNames = BeanFactoryUtils.beanNamesForTypeIncludingAncestors(
                beanFactory, B.class, true, false);
        for (String beanName : beanNames) {
            BeanDefinition definition = beanFactory.getBeanDefinition(beanName);
            definition.setDependsOn(StringUtils.addStringToArray(
                    definition.getDependsOn(), "beanNameOfB");
        }
    }

}

这适用于普通 Spring,不需要 Spring Boot。为了完成自动配置,我需要添加 bean 定义DependsOnPostProcessor到实例化bean的配置类A.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 自动配置顺序 的相关文章

  • 如何从秘密字符串中制作 HMAC_SHA256 密钥以在 jose4j 中与 JWT 一起使用?

    我想生成 JWT 并使用 HMAC SHA256 对其进行签名 对于该任务我必须使用jose4j https bitbucket org b c jose4j wiki Home 我尝试根据秘密生成密钥 SecretKeySpec key
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • Keycloak - 如何获取某个领域的所有用户并将其保存到应用程序数据库?

    我正在使用 Spring Boot 构建 REST API 并使用 Keycloak 进行身份验证和授权 由于用户是由Keycloak管理的 所以我的应用程序数据库没有用户的数据 但我想将 Keycloak 中的用户实体的一些属性存储在我的
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 记录骆驼路线

    我的项目中有几个 Camel 上下文 如果可能的话 我想以逆向工程方式记录路线 因为我们希望保持与上下文相关的文档最新 最好的方法是什么 我们倾向于预先实际设计路线 并使用来自EIP book http www eaipatterns co
  • 内存一致性 - Java 中的happens-before关系[重复]

    这个问题在这里已经有答案了 在阅读有关内存一致性错误的 Java 文档时 我发现与创建 发生 之前 关系的两个操作相关的点 当语句调用时Thread start 每个具有 与该语句发生之前的关系也有一个 与 new 执行的每个语句之间发生的
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Java - 返回值是否会中断循环?

    我正在编写一些基本上遵循以下格式的代码 public static boolean isIncluded E element Node
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 如何通过 Inno Setup for NetBeans 使用自定义 .iss 文件

    我将 Inno Setup 5 与 NetBeans 8 一起使用 并且我已经能够创建一个安装程序来安装该应用程序C users username local appname 但是我希望将其安装在C Programfiles 我如何在 Ne
  • 为什么java中的for-each循环中需要声明变量

    for 每个循环的通常形式是这样的 for Foo bar bars bar doThings 但如果我想保留 bar 直到循环结束 我可以not使用 foreach 循环 Foo bar null Syntax error on toke
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi

随机推荐

  • 用于应用内购买的自动续订订阅

    通过应用内购买 自动续订 购买产品后 我点击服务器上的 API 来提供购买信息 打API如何知道产品是新的 当用户取消该订阅时 如何知道 Swift 3 为了让您检测到用户何时取消订阅 您需要执行以下操作 下载应用程序收据 验证收据 以便您
  • Networkx Python 中的权重相乘

    我正在networkx中绘制一棵树 并添加了百分比份额作为权重 示例 商店和商店的所有者 可以是另一家商店 import pandas as pd data pd DataFrame shop S1 S1 S1 S2 S2 S3 S3 S3
  • 连接 nvarchar(max) 值似乎不起作用(+= 用作=)

    使用 SQL Server 2012 我发现尝试基于表中的 nvarchar max 列构建字符串似乎无法正常工作 它似乎是覆盖 而不是追加 任意示例 DECLARE sql nvarchar max SELECT sql N SELECT
  • Powershell 全局模式匹配

    我正在看C ProgramFiles对于一个名为log4j core x y z jar 我正在尝试匹配最后一位数字z 可以是一位数也可以是两位数 0 99 我似乎无法获得正确的全局模式来完成此任务 Code PS C Users Admi
  • Greasemonkey - 替换 javascript src 以加载自定义 JS 而不是页面之一

    js 文件中有带有变量的特定网页 我想重写Greasemonkey加载的URL 但仍然没有得到任何结果 我使用的代码是 window addEventListener load function allTextareas document
  • 如何将pystache与金字塔集成?

    我想使用 pystache 在我的金字塔应用程序中提供的基于类的视图 但我不完全确定如何正确集成两者 我读了this https stackoverflow com questions 8169606 how to change the t
  • PHP 页面之间传递变量

    我想在一个页面中获取用户输入 将其存储在 php 变量中 然后在另一个 php 页面中使用它 我尝试过使用 会话 但它似乎不起作用 还有其他安全的选择吗 该信息可能是用户名和密码 尝试更改您的会话代码 因为这是执行此操作的最佳方法 例如 索
  • 使用 CSS 样式的按钮元素在 IE6 中不显示背景图像

    我有一个针对 IE 6 的旧版 Web 应用程序 正在重新设计 这些按钮的默认浏览器按钮看起来已替换为蓝色按钮图像 我的以下 HTML 和 CSS 在 IE 8 上工作正常 但在 IE 6 上不行 HTML
  • C++ 标准中的重载与默认参数

    我正在阅读另一个问题 这引起了我的思考 标准通常会指定在其描述中具有默认参数的函数 标准是否允许将它们写为重载 例如 标准规定std basic string copy有以下声明 size type copy Ch p size type
  • git pickaxe 找不到修改的行

    今天早些时候 我正在搜索更改函数名称的提交getReportHtml to getReport 我用镐找不到它 所以我通过手动搜索找到了它 现在我知道哪个提交发生了更改 我可以在 git diff 输出中看到更改 function getR
  • Aurelia:子路由器路由显示在 app.html 元素中的“主”导航栏和子视图中?

    我们想要一个侧边栏菜单和一个 主 区域 根据您的导航方式 侧边栏的菜单项将发生变化 并且新视图将加载到 主 区域 我创建了 app html
  • UIPageViewController 转换“对开始/结束外观转换的不平衡调用”

    当我浏览时UIPageViewController比我得到的过渡动画更快 Unbalanced calls to begin end appearance transitions for
  • 如何使用对象实例作为模板参数?

    我正在学习C 我有一个 Classroom 类 它应该根据正在使用的配置对象以一种或另一种方式表现 创建 Classroom 对象时 我可以在构造函数中传递该 Configuration 对象 如下所示 class Classroom pr
  • 如何通过参数化存储过程填充列表框?

    我有一个Winforms应用程序和一个employeeListBox departmentComboBox和一些文本框来显示员工信息 例如fNameTextbox lNameTextBox 我想通过departmentCombobox 选定
  • 需要资产管道中的树

    我的资产管道中有一个名为 typefaces 的文件夹 它无需任何添加即可工作application rb 在目录中 我有不同的字体类型 例如文件夹中的 eof ttf 等 如下所示 Assets Typefaces Eof files T
  • 是否可以更改 HIVE 中的分区元数据?

    这是我之前提出的问题的延伸 如何比较具有不同数据类型组的两列 https stackoverflow com questions 58240566 how to compare two columns with different data
  • 如何在路由(react-router-dom)react js中将状态从父组件传递到子组件

    我是 React js 的新手 并使用以下命令创建了一个小型反应应用程序react router dom 其中我有两个组成部分 仪表板 dashboard js 信息 information js 和一个主要组件应用程序 App js 其中
  • ConstraintLayout 1.1.0(测试版)中链中的边距如何工作

    自从切换到 ConstraintLayout 版本 1 1 0 beta4 以来 我的几个布局都崩溃了 在进行任何更改之前 我想更好地了解利润率如何运作ConstraintLayout链 下面我比较一下布局ConstraintLayout版
  • 生成达到一定字长的每个字符组合

    几周后我将为我的计算机和信息安全课程做一个安全演示 在这个演示中我将展示不同攻击 字典 彩虹和暴力 的优缺点 我可以很好地进行字典和彩虹攻击 但我需要即时生成暴力攻击 我需要找到一种算法 可以让我循环遍历字母 符号和数字的每个组合 直到达到
  • Spring Boot 自动配置顺序

    我想创建一个 Spring Boot 自动配置类 有条件地 创建单个 beanA 然而 挑战在于 这个 bean 必须在另一个 bean 之前创建B在 Spring Boot 的默认自动配置类之一中创建 豆子B不依赖于A 我的第一次尝试是使