春天@Autowired @Lazy

2023-11-24

我正在使用 Spring 注释,并且我想使用延迟初始化。

我遇到了一个问题,当我想从另一个类导入 bean 时,我被迫使用@Autowired这似乎没有使用惰性初始化。有没有办法强制这种懒惰的初始化行为?

在这个例子中,我不想看到“正在加载父bean”被打印,因为我只是加载childBean它不依赖于lazyParent.

@Configuration
public class ConfigParent {
    @Bean
    @Lazy
    public Long lazyParent(){
        System.out.println("Loading parent bean");
        return 123L;
    }

}

@Configuration
@Import(ConfigParent.class)
public class ConfigChild {
    private @Autowired Long lazyParent;
    @Bean
    public Double childBean() {
        System.out.println("loading child bean");
        return 1.0;
    }
    @Bean
    @Lazy
    public String lazyBean() {
        return lazyParent+"!";
    }
}

public class ConfigTester {
    public static void main(String[] args) {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigChild.class);
        Double childBean=ctx.getBean(Double.class);
        System.out.println(childBean);

    }

}

因为你正在使用@Autowired Long lazyParent,Spring 将在上下文启动时解决该依赖关系。事实是lazyBean is @Lazy是无关紧要的。

尝试这个作为替代方案,尽管我不是 100% 相信这会像你想要的那样工作:

@Configuration
@Import(ConfigParent.class)
public class ConfigChild {

    private @Autowired ConfigParent configParent;

    @Bean
    public Double childBean() {
        System.out.println("loading child bean");
        return 1.0;
    }

    @Bean
    @Lazy
    public String lazyBean() {
        return configParent.lazyParent() + "!";
    }
}

附:我希望你不是really将 Strings、Doubles 和 Longs 定义为 beans,这只是一个示例。正确的...?

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

春天@Autowired @Lazy 的相关文章

随机推荐

  • 学习 LINQ [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 Overview 我在这个网站上问过很多次的事情之一是LINQ 我提出的问题广泛而多样 而且往往没有太多背景 因此 为了巩固我在 Linq 上获得的
  • ASP.NET 传递 Windows 身份验证凭据

    我有一个使用 Windows 身份验证的 ASP NET Web 应用程序 此应用程序需要连接到另一个 ASP NET Web 服务 也使用 Windows 身份验证 并使用从用户浏览器收到的相同凭据 这可以做到吗 如何做到 我不相信没有
  • C++ 错误:转换为执行字符集

    问题是我试图打印 ASCII 之外的一些字符 例如德语元音变音字符 等 这些字符不适合普通的 char 变量 因此显然我尝试将它们放入 wchar t 中并使用 L 初始化字符串 但是每次这个字符串包含上面的一个字符时 我都会收到上述错误
  • 从 CakePHP 2.1.2 控制台 Shell 创建完整 url

    我正在尝试通过控制台 shell 从 CakePHP 2 1 2 发送电子邮件 最终通过 cron 作业 我发送的视图是一个日历 其中包含返回应用程序网页的链接 我发现的问题是网址不包含正确的路径 从我读到的内容来看 这是因为我使用控制台后
  • GIF/JPEG 文件可以包含可运行的 PHP 代码吗?

    测试 Web 应用程序 我可以上传 GIF JPEG 文件 并且我知道在该 GIF Jpeg 中正确包含 PHP 代码时可能存在威胁 因为它是使用图像创建真彩色 and 图像jpeg 我正在寻找包含简单 PHP 代码 如 phpinfo 或
  • GroovyWS 和复杂请求

    我遇到了使用 GroovyWS 发送复杂请求的问题 这是由soapUI生成的示例请求
  • ggplot2 中两个不同组的不同调色板

    我正在尝试创建一个图 显示多个地点的观测数据和建模数据的每月土壤湿度垂直剖面 到目前为止 我只能绘制一组值 无论是观察值还是建模值 如下例所示 library ggplot2 library RColorBrewer Create cust
  • Spring 3 MVC - 高级数据绑定 - 带有简单对象列表的表单请求

    我已经阅读了所有 Spring 3 Web 文档 http static springsource org spring docs 3 0 x spring framework reference html spring web html但
  • 关闭 C# 表单应用程序

    我有 2 个表单 当我启动应用程序时 并使用标题栏中的关闭 X 整个应用程序将关闭 现在 当我从第一个表单中选择一个选项时 在我的情况下它是一个按钮 ADD 作为它的电话簿应用程序 它进入第二种形式 因为我使用了 1stform hide
  • 如何以通用方式禁用 cookie,直到用户接受 cookie

    有没有一种奇特的方法来禁用 cookie 直到用户接受它们 以下问题 我有一个使用大量 cookie 的网上商店 为了符合 GDPR 我们需要 禁用 cookie 直到用户接受它们 我不想重写整个商店系统因此我正在寻找一个通用的解决方案 我
  • Java:查找列表中字符串的索引

    我有一个清单 public static List
  • 在 Android Studio 中运行模拟器时出错

    我刚刚在我的计算机 Windows 8 上安装了 Android Studio 但是当我尝试运行程序时出现错误 错误 无法访问包管理器 系统是否正在运行 我已经尝试了几乎所有模拟器 但仍然收到此错误 或者甚至无法启动 我做错了什么 您需要等
  • 如何使用 PHP 读取 .tar.gz 文件?

    我正在构建一个系统 供人们用 PHP 上传 tar 和 tar gz tar bz2 zip 等 文件 上传文件没问题 但我想在上传后列出存档中包含的文件 有人可以推荐一个可以读取文件档案的好的 PHP 库吗 I found 文件 存档在
  • 在 C++ 中嵌入 Python 并使用 Boost.Python 从 C++ 代码调用方法

    我尝试将 Python 脚本嵌入到我的 C 程序中 在阅读了一些有关嵌入和扩展的内容后 我了解了如何打开自己的 python 脚本以及如何向其传递一些整数 但现在我不明白如何解决我的问题 我必须同时执行这两项操作 从 C 调用 Python
  • Python VS 代码调试 - 捕获 SIGTERM?

    我愿意强行sys exit 当 python 调试器停止时 当我停止调试器时 我看到Terminated 15所以我假设这是SIGTERM 但是 当停止调试器时 不会调用我的终止函数 def kill sig frame sys exit
  • 使用ffmpeg根据开始和结束时间切割视频

    我尝试使用以下命令使用视频的开始和结束时间来剪切视频 ffmpeg ss 00 00 03 t 00 00 08 i movie mp4 acodec copy vcodec copy async 1 cut mp4 通过使用上面的命令 我
  • 为什么要为 tf.keras.layers.LSTM 设置 return_sequences=True 和 stateful=True ?

    我正在学习tensorflow2 0并遵循tutorial 在里面rnn例如 我找到了代码 def build model vocab size embedding dim rnn units batch size model tf ker
  • Python - 为什么 time.sleep 会导致内存泄漏?

    当我运行下面的代码时 内存在增加 但是如果我删除了time sleep 3 它是0 1 in top并且从未增加 它似乎process没有被正确终止 但为什么呢 Code Python 2 7 11 import time import m
  • 获取请求体上的整数

    我需要获取要在数据库上删除的 id 但我无法通过这种方式获取 id 参数 RequestMapping value delete search delete search method RequestMethod DELETE Respon
  • 春天@Autowired @Lazy

    我正在使用 Spring 注释 并且我想使用延迟初始化 我遇到了一个问题 当我想从另一个类导入 bean 时 我被迫使用 Autowired这似乎没有使用惰性初始化 有没有办法强制这种懒惰的初始化行为 在这个例子中 我不想看到 正在加载父b