2011-09-09 73 views
2

我最近開始使用Spring。我正在製作spring mvc項目。所以我的問題是,如果最好是在Spring中使用特定的實現來創建接口和自動裝配它,或者只使用類實例
,以防我只有一個接口的實現?自動裝配和在春天實例化

例如:

@Controller 

public class MyController { 
    @Autowired 
    MyService myService; 

    @RequestMap("/") 
    public String mainPage() { 
     ... 
    } 
} 

@Controller 

public class MyController { 
    @RequestMap("/") 
    public String mainPage() { 
     MyService myService = new MyServiceImpl(); 
     ... 
    } 
} 

如果只有一個實現的MyService接口的?

回答

3

在大多數情況下,你應該用注射去,因爲:

  • 它簡化單元測試(你可以注入模擬的或不同的實現)
  • Spring可以注入一些依賴到MyServiceImpl以及因爲它管理這個對象
  • 你是不是特別的實施耦合控制器

即使你的服務不具有一個接口,因爲第二個原因你應該考慮注射。

當你想跳過Spring的唯一情況是當類沒有任何依賴並且是無狀態的。但很可能這樣的類是一種實用程序,根本不需要任何實例,因爲它只有static成員。

1

這取決於MyService是否是一個擁有狀態的bean。如果我的服務不保持狀態,那麼你不需要創建新的實例,你可以讓Spring注入它,具有上述的優點