我正在尝试 Autowiring Controller bean 内的接口(interface)
在我放置的上下文配置文件中
<context:annotation-config />
和
<bean id="viewVerbale" class="com.sirfe.controller.VerbaliController" />
我的 Controller 类是
@Controller
public class VerbaliController {
@Autowired
VerbaliRepository repository;
private static final Logger logger = LoggerFactory.getLogger(VerbaliController.class);
@RequestMapping(value = "/sirfe/verbale/{sequVerbale:.+}", method = RequestMethod.GET)
public ModelAndView viewVerbale(@PathVariable("sequVerbale") String sequVerbale) {
logger.debug("welcome() - sequVerbale {}", sequVerbale);
Verbali verbale = repository.findOne(Long.parseLong(sequVerbale));
ModelAndView model = new ModelAndView();
model.setViewName("sirfe/verbali/viewVerbale");
model.addObject("sequVerbale", sequVerbale);
return model;
}
}
我的界面签名是
public interface VerbaliRepository extends CrudRepository<Verbali, Long> { }
当我启动我的应用程序时,我得到
Could not autowire field: com.sirfe.repository.VerbaliRepository com.sirfe.controller.VerbaliController.repository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.sirfe.repository.VerbaliRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.
最佳答案
看起来您正在尝试使用 Spring JPA 存储库。
为了让 Spring 为您的存储库接口(interface)创建 bean,您需要在 applicationContext.xml 中声明要扫描的包
<jpa:repositories base-package="com.sirfe.repository" />
这样做,Spring将为您生成实现该接口(interface)的bean。
关于java - 不能@Autowired接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29142679/