3

我有一个关于春季风格的琐碎问题。

给定一组 Java 类:

A 类、B 类、C 类和 D 类。

这些类来自另一个系统,无法更改。

这些类必须由不同的处理器处理。一些类由通用处理器处理。

所以我的问题是将类映射到它们的处理器上的最佳弹簧方式是什么。目前我有一个工厂 bean 做这样的事情:

package org.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.springframework.stereotype.Component;

@Component
public class processorFactory
{

private static List<Object> proc1List = new ArrayList<Object>(Arrays.asList(
        classA.class, classB.class));

private static List<Object> proc2List = new ArrayList<Object>(
        Arrays.asList(classC.class));

private static List<Object> proc3List = new ArrayList<Object>(
        Arrays.asList(classD.class));

public static processor getProcessor(Object object)
{

    if (proc1List.contains(object))
        return new processor1();
    else if (proc2List.contains(object))
        return new processor2();
    else if (proc3List.contains(object))
        return new processor3();

    throw new RuntimeException("no processor.");
}
}

大部分代码与 spring 是多余的。我确信有多种方法可以做到这一点,但我的问题是在春季使用注释实现这一点的最佳方法是什么。

4

1 回答 1

1

如果您使用的是 Spring Java Config,那么您可以直接转换上面的代码。也就是说,您的“工厂”代码将成为用于创建处理器的@Bean 代码(应该有一个大写的“P”:)

于 2013-01-15T12:23:40.083 回答