- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有没有办法将转换策略(用于转换一些字节)存储到数据库中,然后在运行时执行它。
如果要存储一个完整的 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/
我是一名优秀的程序员,十分优秀!