2016-04-21 120 views
0

我想在我的Spring MVC Web應用程序中使用依賴注入。我有我的控制器這樣的功能Spring MVC中的依賴注入?

@RequestMapping(value = "/stockgoogle/", method = RequestMethod.GET) 
public @ResponseBody Stock stockGoogle(Locale locale, Model model) {  
    StockDaoImpl si = new StockDaoImpl(); 
    //al=s.listCurrent(id); 
    Stock s=si.listGoogle(); 
    System.out.println("reached here"); 
    model.addAttribute("s", s);   
    return s; 
} 

我想依賴注入StockDaoImpl。你能告訴我怎麼做到這一點。我一直在努力閱讀,但大部分的解釋都非常複雜。我應該使用@Autowired嗎?我應該把它放在哪裏?你能幫忙嗎?

+1

如果大多數的解釋是非常複雜的,你不會得到任何更好地在這裏。閱讀Spring文檔。這是Spring的最基本和重要的概念。 – Savior

回答

2

你可以通過控制器的構造函數注入它

class YourController{ 

    private final StockDao dao; 

    @Autowired 
    public YourController(StockDao dao){ 
    this.dao = dao; 
    } 
} 

現在StockDaoImpl已被定義爲當然的Bean

@Bean 
public StockDao stockDao(){ 
    return new StockDaoImpl(); 
} 

另一種方式做,將被定義StockDaoImpl作爲Component

+0

嗨蘇萊曼,謝謝你的回答。我會做的。我需要改變什麼嗎?在這個控制器方法? –

+0

不,但開始使用this.dao,而不是直接實例化 –

+0

@Pillar完成。謝謝!! –

0

添加下面配置在彈簧配置文件(例如根的context.xml)

然後在你的控制器,你喜歡下面的代碼

類{的TestController

@Autowired 私人StockDao stockDao;

}

0

隨着春天-4,你可以在給定的方式直接注:

@Autowired 
private StockDao stockDao; 

public @ResponseBody Stock stockGoogle(Locale locale, Model model) {  

    //al=s.listCurrent(id); 
    Stock s = stockDao.listGoogle(); 
    System.out.println("reached here"); 
    model.addAttribute("s", s);   
    return s; 

} 

這裏

  • StockDao將包含方法簽名
  • STOC kDaoImpl實現StockDao並定義方法
  • 自動裝配將注入該Dao,並且您可以使用它的方法。