在动态创建的类中实例化 spring bean

2024-02-17

我正在动态创建包含 spring bean 的类,但是这些 bean 没有被实例化或初始化,将它们保留为空。

如何确保动态创建的类正确创建其所有 spring bean?

这就是我动态创建类的方式:

Class ctransform;
try {
    ctransform = Class.forName(strClassName);
    Method handleRequestMethod = findHandleRequestMethod(ctransform);
    if (handleRequestMethod != null) {
        return (Message<?>) handleRequestMethod.invoke(ctransform.newInstance(), message);
            }
    }

这会将 ctransform 中的所有 spring bean 对象(类型为 strClassName)保留为 null。


每当你实例化类时,它们都是not弹簧管理。 Spring 必须实例化类,以便它可以注入它们的依赖项。当您使用时的情况除外@Configurable and <context:load-time-weaver/>,但这更像是一种黑客行为,我建议不要这样做。

Instead:

  • 使 bean 成为作用域prototype
  • 获得ApplicationContext(在网络应用程序中,这是通过WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext))
  • 如果类没有注册(我认为它们没有),请尝试转换为StaticApplicationContext(我不确定这会起作用),然后打电话registerPrototype(..)在上下文中注册您的类。如果这不起作用,请使用GenericContext和它的registerBeanDefinition(..)
  • 获取与您的类型匹配的所有实例,使用appContext.getBeansOfType(yourclass);或者如果您刚刚注册并知道其名称 - 只需使用appContext.getBean(name)
  • 决定哪一个适用。通常,您的目录中只有一项Map,所以使用它。

但我通常会避免对 spring beans 进行反思 - 应该有另一种方法来实现目标。


Update:我只是想到了一个更简单的解决方案,如果您不需要注册 bean,那么该解决方案将起作用 - 即您的动态生成的类不会被注入到任何其他动态生成的类中:

// using WebApplicationContextUtils, for example
ApplicationContext appContext = getApplicationContext(); 
Object dynamicBeanInstance = createDyamicBeanInstance(); // your method here
appContext.getAutowireCapableBeanFactory().autowireBean(dynamicBeanInsatnce);

并且您将设置依赖项,而无需将新类注册为 bean。

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

在动态创建的类中实例化 spring bean 的相关文章

  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • “java.net.MalformedURLException:未找到协议”读取到 html 文件

    我收到一个错误 java net MalformedURLException Protocol not found 我想读取网络上的 HTML 文件 mainfest uses permission android name android
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • Spring表单ModelAttribute字段验证避免400 Bad Request错误

    我有一个ArticleFormModel包含正常发送的数据html form由 Spring 使用注入 ModelAttribute注释 即 RequestMapping value edit method RequestMethod PO

随机推荐

  • 协议缓冲区 Java RPC 堆栈

    根据this http en wikipedia org wiki Protocol Buffers维基百科条目 Protocol Buffers 与 Facebook 的 Thrift 协议非常相似 只是它不包含用于定义服务的具体 RPC
  • Flutter:如何允许内容重叠 SliverAppBar?

    在android中我们使用的是app behavior overlapTop 64dp 为了达成这个 我想要重叠内容与上面的 flutter 中的 GIF 相同 My code class DetailsPage extends State
  • 通过分割视图控制器使用多个详细视图

    如您所知 一个UISplitViewController只有一个根控制器和一个详细视图控制器 但我想使用另一个详细视图控制器 当我从根控制器 弹出窗口控制器 中选择列表项时 选择应该触发不同的详细视图 即 row1 触发详细视图 1 row
  • 在 Blazor WebAssembly 客户端应用程序中使用 Serilog 作为日志记录提供程序

    我想在客户端和服务器端的 blazor web assembly net 6 应用程序中使用 serilog 在本文 https nblumhardt com 2019 11 serilog blazor 我发现了如何将日志条目中继到服务器
  • 运算符 << 和继承

    我有以下 C 类 class Event friend ofstream operator lt lt ofstream ofs Event e class SSHDFailureEvent public Event friend ofst
  • 从 glTexStorage3D 切换到 glTexImage3D

    glBindTexture GL TEXTURE 2D ARRAY texture id glTexStorage3D GL TEXTURE 2D ARRAY 1 No mipmaps GL RGBA8 Internal format wi
  • Spring Security:不同路径的多个 OpenID Connect 客户端?

    使用 Spring Boot 2 1 5 和 Spring Security 5 我尝试使用两个不同的 OpenID 客户端 基于 Keycloak 这是我们所拥有的application properties spring securit
  • Vuejs 2:将事件从组件发送到父级

    我有这个代码 html div text div
  • Hibernate Sessionfactory 重启 |春天

    我的要求如下 我需要使用从外部获得的新 HBM 文件频繁地在 Spring Web 应用程序中重新启动 或重建 休眠会话工厂 目前我的 Sessionfactory 类如下 带有 SessionFactory 代理来拦截 OpenSessi
  • 如何针对多个和/或条件使用 Hibernate Criteria 对象

    我需要创建一个 Hibernate 标准限制来满足 3 个条件 问题是最后一个条件实际上是使用 AND 运算符的条件 我的第一个条件 Criterion startInRange Restrictions between expectedS
  • 从 Flutter 的 List 中删除索引式 CustomWidget

    我最初在列中的小部件列表为空 现在在 其他小部件 上单击 我正在在 contactItems 中添加新的自定义小部件 Column children contactItems List
  • Unity3D - 用于精灵裁剪的着色器

    我正在尝试创建一个可用于在游戏中剪辑 2D 精灵的着色器 我在中找到了该着色器另一个问题 https stackoverflow com questions 16397023 unity3d a shader that will clip
  • 如何将dcm4che库导入到java项目中?

    我正在尝试导入dcm4che库到我的java项目 因为我想实现一个非常简单的应用程序 它将能够使用这个库 https github com dcm4che dcm4che https github com dcm4che dcm4che 我
  • 为这个要求写一个skype插件

    我正在开始研究 Skype 编程 Skype 插件是否只有一种技术 或者是否有多种框架或 API 我想制作一个插件 让我的数据库中的用户可以通过 Skype 相互通信 视频 音频 聊天 而无需看到彼此真实的 Skype id 这可能吗 我想
  • C# 4.0 的新“命名参数”功能不应该称为“命名参数”吗?

    我想这种命名可能有历史原因 而且其他语言也有类似的功能 但在我看来 参数在 C 中总是有一个名称 参数是未命名的参数 或者选择这个术语有什么特殊原因吗 哦 你想要论点 抱歉 这是参数 参数是左边大厅里的两扇门
  • 如何检查 Eclipse 插件性能

    我是 Eclipse 插件开发新手 我一直在修改我们团队中使用的一个插件 我不想添加新的瓶颈 另外 我要集成的 Eclipse 需要太多时间来安装插件 关于如何确定其原因有什么建议吗 所以我想知道一些技巧 如何检查插件的性能 任何可用的工具
  • jQuery .html() 不复制文本区域或输入的内容

    我正在尝试使用复制元素的内容elem html 但它不包括的内容inputs or textareas 这是一个示例 尝试在框中写入 然后单击 复制 http jsfiddle net gAMmr 2 http jsfiddle net g
  • ElasticSearch 6,具有动态索引映射的 copy_to

    也许我错过了一些简单的事情 但仍然无法弄清楚以下事情 从 ES 6 x 开始 all字段已弃用 建议使用copy to操作说明 https www elastic co guide en elasticsearch reference cu
  • 将 ipython 笔记本转换为 mediawiki

    我想将 ipython 笔记本转换为 mediawiki 标记 我有两个想法如何做到这一点 自定义导出nbconvert tool 先导出为LaTeX 然后使用pandoc将其转换为 mediawiki 标记 我在第一个选项中找不到任何内容
  • 在动态创建的类中实例化 spring bean

    我正在动态创建包含 spring bean 的类 但是这些 bean 没有被实例化或初始化 将它们保留为空 如何确保动态创建的类正确创建其所有 spring bean 这就是我动态创建类的方式 Class ctransform try ct