java - 找不到依赖项 : Spring MVC 类型的匹配 bean

标签 java spring spring-mvc dependency-injection

尝试在 Spring MVC 项目中使用 @autowire、@configuration、@bean、@Repository 时遇到此错误

Could not autowire field: private com.sachin.dao.StockDaoImpl com.sachin.myapp.HomeController.stockDao;

nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.sachin.dao.StockDaoImpl] found for dependency:

请让我知道我犯了什么错误。我是 Spring MVC 和依赖注入(inject)的新手。

这是我的 Controller 代码。我正在尝试将 StockDaoImpl 注入(inject) Controller 中。

@Controller
public class HomeController {

     @Autowired
    private StockDaoImpl stockDao;

    @RequestMapping(value = "/stockgoogle/", method = RequestMethod.GET)
    public @ResponseBody Stock stockGoogle(Locale locale, Model model) {    
        //StockDaoImpl stockDao = new StockDaoImpl();
        Stock s=stockDao.listGoogle();
        model.addAttribute("s", s );        
        return s;
    }

}

我的服务实现如下。我在这里使用了 @Repository 注释和“stockDao”,这是我想要注入(inject)的 Controller 中的变量名

@Repository("stockDao")
public class StockDaoImpl implements StockDao { 
    @Override
    public Stock listGoogle() {
        Stock s = null;
        try {
            ... //some code
            String  name = rs.getString("Name");
            s = new Stock(name);
            ...
         } catch (Exception e) {
         }
         return s;
    }
}

我还单独创建了一个配置类。我用它来定义我的 bean。我仅使用它来指定 bean,并没有将其导入到代码中的任何位置。

@Configuration
public class BeanConfiguration {
    @Bean
    public StockDaoImpl stockDao(){
      return new StockDaoImpl();
    }
}

我在这里错过了什么吗?从错误来看,@Bean 注释对工厂来说似乎不可见。除了注释 @configuration 类之外,我还需要做其他事情吗?

我也可能以错误的方式使用注释。我可能在使用 @Autowired 或 @Repository 时犯了错误。

你能帮忙吗?

最佳答案

我认为这可能是您的问题:

“我还单独创建了一个配置类。我用它来定义我的 bean。我只是用它来指定 bean,并没有在代码中的任何地方导入它。”

在某个地方你需要告诉Spring寻找BeanConfiguration。您可以在 applicationContext.xml 文件(假设您有一个)中执行此操作,如下所示:

<context:component-scan base-package="com.sachin.config" />

这假设 BeanConfiguration 位于 com.sachin.config 包中。

如果您找不到放置此文件的位置,共享您的 web.xml 文件可能会有所帮助。

关于java - 找不到依赖项 : Spring MVC 类型的匹配 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36783842/

相关文章:

spring - Jasper Reports 将 PDF 保存到磁盘

spring-mvc - 在哪里定义 Web 应用程序的数据源?

spring-mvc - 如何将通用集合类对象作为参数传递

java - Android RelativeLayout.LayoutParams 无法转换为 AbsListview.LayoutParams(错误低于 4.4.4)在 5.0 和 6.0.1 上工作正常

spring - 如何在grails中更改主页?

java - 从 Maven 启动的 Jetty 实例中创建进程

java - 为什么 DataSourceTransactionManage 不回滚而 HibernateTransactionManager 回滚?

java - 如何为泛型类型实现 equals?

java - Android 屏幕尺寸和密度。如何选择文字大小?

java.lang.IllegalStateException : Could not locate PropertySource and the fail fast property is set, 微服务失败