2016-04-21 89 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,并且您可以使用它的方法。