java - SPRING:如何根据从 Flex UI 传递的信息以编程方式实例化类

标签 java apache-flex spring

想象一下 UI 传回一个 XMl 节点:

<properties>
<type> Source </type>
<name> Blooper </name>
<delay>
    <type> Deterministic </type>
    <parameters>
       <param>  4 </param>
    </parameters>
<delay>
<batch>
    <type> Erlang </type>
    <parameters>
       <param>  4 </param>
        <param>  6 </param>
    </parameters>
<batch>

在幕后要求您实例化一个类:

new Source("blooper", new Exp(4), new Erlang(4,6);

问题在于您不知道需要处理什么类,您将收到这些类定义的列表以及如何将它们相互链接的说明。

我听说使用 BeanFactoryPostProcessor 或属性编辑器/转换器可能会有帮助。但是,我不知道如何最好地使用它们来解决我的问题。

如果您能提供任何帮助,我们将不胜感激。

最佳答案

我似乎无法在您的问题中提及 spring,因此我将编写一个无 spring 的解决方案。如果您有一些没有提到的 spring-flex 集成,请分享。

Class<?> clazz = Class.forName(type);
return type.newInstance(); // returns a new instance of the specified type

你有两个条件:

  • type 必须是完全限定的 - 即 com.foo.bar.MyType。如果不是,你必须事先以某种方式转换它
  • 该类必须具有默认(无参数)构造函数。

然后,如果您希望这些类的依赖项由 spring 上下文 Autowiring ,您可以通过以下方式实现:

WebApplicationContextUtils.getRequiredWebApplicationContext()
     .getAutowireCapableBeanFactory().autowire(..);

(或 autowireBean)。如果您使用带有 Class 参数的那个,您应该在作用域原型(prototype)之前定义 beans。否则,您只需实例化它们并让 spring 注入(inject)它们的依赖关系,而无需预先配置它们。

关于java - SPRING:如何根据从 Flex UI 传递的信息以编程方式实例化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2351317/

相关文章:

java - 由于某种原因,检查碰撞(同一坐标中是否有对象)会在几秒钟内使 java 崩溃

java - 在java中获取实例化类型变量

java - QT 与 Flex/Flash/AIR 的多媒体对比

flash - as3 : youtube api/possible to add youtube's "like-button" (rating)?

java - Apache Camel 在路由期间返回多个异常

java - 必须自动突出显示从文本字段到文本区域的特定字符串

apache-flex - 如何从现有项目文件中知道确切的 flex sdk 版本?

java - Spring boot 在 servlet 上下文之外获取应用程序基础 url

java - Spring jdbcTemplate数据访问和java算法

java - Spring Boot 不为 ZonedDateTime 使用自定义反序列化器