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

在Spring Boot中向您不“拥有”的bean添加后构造钩子[重复]

蓟浩旷
2023-03-14

在我的Spring Boot应用程序中,我希望在bean初始化之后,但在任何依赖bean初始化之前运行一些代码。(在我的特定场景中,我希望在连接池启动后,但在依赖于该池的任何bean启动之前,运行一些代码来设置一些MongoDB索引。)

我很熟悉@PostConstruct注释,除了必须将其添加到类本身中定义的方法之外,它与我所关注的非常接近。我也熟悉Spring生命周期挂钩,但这也不够好,因为我需要在一个特定bean初始化后立即挂钩到point。

我所追求的基本上只是@PostConstruct所做的,但允许您在运行时向实例外部添加钩子。这样的东西存在吗?

共有1个答案

江志业
2023-03-14

您是否研究过BeanPostProcessor接口?

基本上,您实现了这个接口,它提供了钩子,其中包括:PostProcessBeforeInitializationPostProcessAfterInitialization。方法签名如下所示:

@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    // DO SOMETHING HERE WITH THE BEAN before initialization
    return bean;
}

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    //DO SOMETHING HERE WITH THE BEAN after INITIALIZATION
    return bean;
}

因此,简单地说,BeanPostProcessor的实现将扫描每个Springbean,然后以所需的方法(或两者)执行逻辑。

 类似资料:
  • 添加插件钩子有两种方法 添加执行多次的插件钩子 hook($hook, &$params = null, $extra = null) 功能 添加执行多次的插件钩子 参数 $hook: string 钩子名称 $params: boolean 传入参数 $extra: boolean 额外参数 返回 string 插件执行结果 添加只执行一次的插件钩子 hook_one($hook, &$par

  • X1.4.0新增 hook($hook,$param) 功能: 添加钩子 参数: $hook:钩子名称 $param:传入参数,默认为空数组 返回: 无 模板使用: {:hook('footer')} {:hook('sider',array('text'=>'hello ThinkCMF')} 控制器方法里使用: //不带参数 hook('your_hook_name'); //带参数 h

  • 有没有人可以帮助我理解为什么在向一个接受两个参数的类添加了一个新的构造函数之后,项目编译了,但是我的测试现在不能创建这个类的新实例? 我有一个例外: java.lang.nosuchmethoderror:pidac.workflow.testclass。(lcom/pidac/infrastructure/core/service/crudservice;lcom/pidac/infrastru

  • 添加插件钩子有两种方法 添加执行多次的插件钩子 hook($hook, $params = null) 功能 添加执行多次的插件钩子 参数 $hook: string 钩子名称 $params: boolean 传入参数 返回 string 插件执行结果 添加只执行一次的插件钩子 hook_one($hook, $params = null) 功能 添加只执行一次的插件钩子 参数 $hook:

  • 问题内容: 我已经将一个自定义distutils命令添加到setup.py脚本中: 有没有办法做到这一点,以便在运行时:: 第一次打电话 自动吗? 问题答案: 您可以覆盖:

  • 我正在用JavaFX编写一个简单的游戏应用程序,并试图实现重启游戏功能。我最初的想法是拿走gameView窗格,移除它的孩子,然后重新添加干净的。出于某种原因,这行不通。在舞台已经显示后,是否有其他方法在场景中的窗格中添加/移除儿童? 欢迎提出任何建议。