2013-01-12 14 views
3

我對春天風格有一個微不足道的問題。Java Spring風格:針對給定類別的處理器類別的工廠

給定一組Java類:

ClassA的,ClassB的,ClassC & D類。

這些類來自另一個系統,不能更改。

這些類必須由不同的處理器處理。某些類由普通處理器處理。

所以我的問題是什麼是將類映射到其處理器的最佳春季方法。目前我有一個工廠豆與做這樣的事情:

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."); 
} 
} 

大多數的代碼是多餘的彈簧。我確信有很多種方法可以做到這一點,但我的問題是,在春季使用註釋實現這一點的最佳方式是什麼。

回答

1

如果你使用的是Spring Java Config,那麼你可以直接轉換你的代碼。也就是說,你的「工廠」代碼將成爲創建處理器的@Bean代碼(它應該有一個大寫的「P」:) :)

+0

是的,這或多或少是我在真實代碼中得到的。它也有大寫字母P :-)。但我想知道是否有更好的方法來實現它--Spring應該是一個複雜的對象工廠,所以它可能會支持更好的方法。 – DUFF