Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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/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
Java 在Spring中使用@Autowired annotation时,我应该如何解决以下错误?_Java_Spring_Spring Boot - Fatal编程技术网

Java 在Spring中使用@Autowired annotation时,我应该如何解决以下错误?

Java 在Spring中使用@Autowired annotation时,我应该如何解决以下错误?,java,spring,spring-boot,Java,Spring,Spring Boot,我是Spring新手,在尝试使用@Autowired注释时遇到了一些问题,在尝试将存储库类注入PostController时遇到了一些问题 @Controller @RequestMapping("/posts") public class PostController { @Autowired private Repository repository; @RequestMapping(value="",method= RequestMethod.GET)

我是Spring新手,在尝试使用@Autowired注释时遇到了一些问题,在尝试将存储库类注入PostController时遇到了一些问题

@Controller
@RequestMapping("/posts")

public class PostController {


    @Autowired 
    private Repository repository;


    @RequestMapping(value="",method= RequestMethod.GET)
    public String listPosts(Model model){
        model.addAttribute("posts",repository.findAll());
        return "posts/lists";
    }
}

public interface Repository extends CrudRepository<Posts,Long> {
}
这些是我收到的错误消息

线程主org.springframework.beans.factory.BeanCreationException中出现异常:创建名为“postController”的bean时出错:自动连线依赖项的注入失败;嵌套异常为org.springframework.beans.factory.beancreatitionException:无法自动关联字段:private domain.Repository controllers.PostController.Repository;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项类型为[domain.Repository]的符合条件的bean:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowiredrequired=true} 位于org.springframework.beans.factory.annotation.AutowiredNotationBeanPostProcessor.PostProcessPropertyValue SautowiredNotationBeanPostProcessor.java:334 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBeanAbstractAutowireCapableBeanFactory.java:1208 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBeanAbstractAutowireCapableBeanFactory.java:537 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanAbstractAutowireCapableBeanFactory.java:476 位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObjectAbstractBeanFactory.java:303 位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingletonDefaultSingletonBeanRegistry.java:230 位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBeanAbstractBeanFactory.java:299 位于org.springframework.beans.factory.support.AbstractBeanFactory.getBeanAbstractBeanFactory.java:194 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleTonsDefaultListableBeanFactory.java:755 位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitializationAbstractApplicationContext.java:759 位于org.springframework.context.support.AbstractApplicationContext.refreshAbstractApplicationContext.java:480 位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refreshEmbeddedWebApplicationContext.java:117 位于org.springframework.boot.SpringApplication.refreshSpringApplication.java:689 位于org.springframework.boot.SpringApplication.runSpringApplication.java:321 位于org.springframework.boot.SpringApplication.runSpringApplication.java:969 位于org.springframework.boot.SpringApplication.runSpringApplication.java:958 在MyApplication.mainMyApplication.java:7 原因:org.springframework.beans.factory.BeanCreationException:无法自动关联字段:private domain.Repository controllers.PostController.Repository;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项类型为[domain.Repository]的符合条件的bean:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowiredrequired=true} 位于org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor$AutoWiredFeldElement.InjectAutoWiredNotationBeanPostProcessor.java:561 位于org.springframework.beans.factory.annotation.InjectionMetadata.InjectionMetadata.java:88 位于org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValuesAutowiredAnnotationBeanPostProcessor.java:331 ... 还有16个 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项类型为[domain.Repository]的符合条件的bean:应至少有1个bean符合此依赖项的autowire候选项的条件。依赖项注释:{@org.springframework.beans.factory.annotation.Autowiredrequired=true} 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.RaiseNouchBeanDefinitionExceptionDefaultListableBeanFactory.java:1301 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependencyDefaultListableBeanFactory.java:1047 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependencyDefaultListableBeanFactory.java:942 位于org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor$AutoWiredFeldElement.InjectAutoWiredNotationBeanPostProcessor.java:533 ... 还有18个


您必须创建自己的存储库并从存储库扩展它,现在您使用的是spring存储库接口

@Repository
public interface PostRepository extends CrudRepository<Posts,Long> {

}

查看您的日志,我建议您验证两点:

是用@C注释的domain.Repository吗 成分? 如果应用程序启动到controllers包中,它将只解析controllers包下面的类,这不包括存储库所在的域包
对于第二点快速修复,您可以重新排列myapp包下的包,并让spring应用程序开始形成该级别的类,或者更多

对于良好实践jpa、hibernate,尤其是为了更好地处理持久性异常,您必须将@Repository注释添加到所有存储库中

@Repository
public interface PostRepository extends CrudRepository<Posts,Long> {

}

还要提到,作为一种良好的实践,您创建了一个服务来处理使用存储库的流程的所有逻辑。

这里的异常是NosuchbeAndDefinitionException

基于

有许多可能导致这种例外。请通读此详细说明以了解完整情况。->

是否使用设定器?或者将其声明为对构造函数的依赖关系?使用@repository注释存储库,但为interfaceAgree选择不同的更具体的名称使用@Erwin Bolwidt请使用@repository注释存储库接口,并更改存储库接口名称,如PostsRepository
@Repository
public interface PostRepository extends CrudRepository<Posts,Long> {

}
@Autowired 
PostRepository postRepository;
public class NoSuchBeanDefinitionException
extends BeansException

Exception thrown when a BeanFactory is asked for a bean instance for which it cannot find a definition. This may point to a non-existing bean, a non-unique bean, or a manually registered singleton instance without an associated bean definition.