Java Spring风格:给定类的处理器类别的工厂



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

给定一组Java类:

a类,b类,c类&ClassD .

这些类来自另一个系统,不能更改。

这些类必须由不同的处理器处理。其中一些类由公共处理器处理。

所以我的问题是,将类映射到它们的处理器上的最佳spring方法是什么?目前,我有一个工厂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中是冗余的。我确信有各种方法可以做到这一点,但我的问题是,在spring中使用注释实现这一点的最佳方法是什么?

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

最新更新