Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringMVC中的依赖注入?_Spring_Spring Mvc_Dependency Injection - Fatal编程技术网

SpringMVC中的依赖注入?

SpringMVC中的依赖注入?,spring,spring-mvc,dependency-injection,Spring,Spring Mvc,Dependency Injection,我试图在我的SpringMVCWeb应用程序中使用依赖注入。我的控制器中有这样一个函数 @RequestMapping(value = "/stockgoogle/", method = RequestMethod.GET) public @ResponseBody Stock stockGoogle(Locale locale, Model model) { StockDaoImpl si = new StockDaoImpl(); //al=s.listCurrent

我试图在我的SpringMVCWeb应用程序中使用依赖注入。我的控制器中有这样一个函数

@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吗?我应该把它放在哪里?您可以提供帮助。

您可以通过控制器的构造函数注入它

class YourController{

  private final StockDao dao;

  @Autowired 
  public YourController(StockDao dao){
    this.dao = dao;
  }
} 
现在
StockDaoImpl
必须定义为
Bean
,当然

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

另一种方法是将
StockDaoImpl
定义为
组件

,您可以通过控制器的构造函数将其注入

class YourController{

  private final StockDao dao;

  @Autowired 
  public YourController(StockDao dao){
    this.dao = dao;
  }
} 
现在
StockDaoImpl
必须定义为
Bean
,当然

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

另一种方法是将
StockDaoImpl
定义为
组件

在Spring配置文件(例如root context.xml)中添加以下配置

然后在控制器中,您喜欢下面的代码

类TestController{

@自动连线 私人股票


}

在Spring配置文件中添加以下配置(例如root context.xml)

然后在控制器中,您喜欢下面的代码

类TestController{

@自动连线 私人股票

}

使用spring-4,您可以以给定的方式直接注入

这里

  • StockDao将包含方法签名
  • StockDaoImpl实现StockDao和方法的定义
  • Autowired将注入该Dao,您可以使用它的方法
使用spring-4,您可以以给定的方式直接注入

这里

  • StockDao将包含方法签名
  • StockDaoImpl实现StockDao和方法的定义
  • Autowired将注入该Dao,您可以使用它的方法

如果大多数解释都非常复杂,您在这里也不会有更好的解释。阅读Spring文档。这是Spring最基本和最重要的概念。如果大多数解释都非常复杂,那么在这里你不会得到更好的解释。阅读Spring文档。这是春天最基本也是最重要的概念。嗨,苏莱曼,谢谢你的回答。我会这样做的。我还需要改变什么吗?在这个控制器方法中?不,但是开始使用this.dao,而不是直接实例化它。很抱歉,只是澄清一下。StockDao()方法应该放在哪里?StockDao是我的接口,StockDaoImpl类是实现。找不到[com.sachin.dao.StockDao]类型的匹配bean作为依赖项:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项注释:{};嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到依赖项类型为[com.sachin.dao.StockDao]的匹配bean:至少需要1个符合此依赖项autowire候选项条件的bean。@sachinsrivastava您可以将其放入配置类Hi-Sleiman中,谢谢您的回答。我会这样做的。我还需要改变什么吗?在这个控制器方法中?不,但是开始使用this.dao,而不是直接实例化它。很抱歉,只是澄清一下。StockDao()方法应该放在哪里?StockDao是我的接口,StockDaoImpl类是实现。找不到[com.sachin.dao.StockDao]类型的匹配bean作为依赖项:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项注释:{};嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到依赖项类型为[com.sachin.dao.StockDao]的匹配bean:至少需要1个符合此依赖项autowire候选项条件的bean。@sachinsrivastava您可以将其放入配置类中