gpt4 book ai didi

java - 使用 Spring 3.0 将字节转换为类型,而无需更改应用程序(即将转换方法存储在 DB 中)

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:07 24 4
gpt4 key购买 nike

有没有办法将转换策略(用于转换一些字节)存储到数据库中,然后在运行时执行它。

如果要存储一个完整的 java 文件,您需要对其进行编译、存储类以及如何注入(inject)到已经运行的系统中。我不确定这怎么可能。

但是在 JVM 上使用某种动态语言会很好。我在这里看到了在 spring 上下文中执行 groovy 的示例 http://www.devx.com/tips/Tip/42789

但这本质上仍然是静态的,因为应用程序上下文包含对实现的引用,并且数据库无法更改。

这有点像让最终使用DSL(领域特定语言)来存储和执行转换策略。最终用户将能够输入他们的自定义规则

也许使用上下文的 JavaConfig 这是可能的。我现在正在探索各种选择,特别是 Spring 3.0。欢迎您提出任何方向的建议。

最佳答案

对我来说,这听起来像是您想要 serialize Java 类到数据库。据我所知,这是完全可以的,尽管我自己从未这样做过。这是 tutorial 的链接,但您可以轻松地通过 Google 搜索了解更多信息。

OTOH 再想一想,为什么您实际上需要在数据库中存储完整的类实例?存储完全限定的类名,然后加载该类并通过 Spring 实例化它(使用也可能来自配置的所需属性)还不够吗?

更新:好的,现在我更好地了解您的情况了。

如果您可以限制最终用户提供可序列化的策略类,那么序列化可能是一个可行的选择。请注意,尽管序列化有其自身的怪癖,但正确执行它需要比一般 Java 知识更深入的知识。乔什·布洛赫 (Josh Bloch) Effective Java 2nd Ed.整个第 11 章都致力于连载。执行外部各方提供的代码也可能会带来安全风险。

另一种可能的选择是自己实现 DSL 的元素,然后让最终用户从您提供的元素中组合出他们想要的内容。这会更安全、更稳健,因为您仍然可以控制哪些内容进入数据库以及哪些内容被执行。

关于java - 使用 Spring 3.0 将字节转换为类型,而无需更改应用程序(即将转换方法存储在 DB 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2487091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com