【发布时间】:2016-08-15 11:53:22
【问题描述】:
在我的 Spring MVC 项目中尝试使用 @autowire、@configuration、@bean、@Repository 时出现此错误
无法自动装配字段:private com.sachin.dao.StockDaoImpl com.sachin.myapp.HomeController.stockDao;
嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到类型为 [com.sachin.dao.StockDaoImpl] 的匹配 bean 的依赖项:
请告诉我我犯了什么错误。我是 Spring MVC 和依赖注入的新手。
这是我的控制器代码。我正在尝试在控制器中注入 StockDaoImpl。
@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”,这是我要注入的控制器中的变量名
@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 时犯了一个错误。
你能帮忙吗?
【问题讨论】:
-
既然您使用的是 Java 配置,那么您是否指向您的配置类?如:@ComponentScan(basePackages="com.sachin.applyuc")
标签: java spring spring-mvc dependency-injection