我有一个关于春季风格的小问题。
给定一组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":)