簡體   English   中英

org.springframework.beans.factory.UnsatisfiedDependencyException Springboot

[英]org.springframework.beans.factory.UnsatisfiedDependencyException Springboot

Estou com o erro abaixo ao subir o projeto springboot:4164 --- [restartedMain] ConditionEvaluationReportLoggingListener:

啟動 ApplicationContext 時出錯。 要顯示條件報告,請在啟用“調試”的情況下重新運行您的應用程序。 2021-05-05 12:45:03.927 錯誤 14164 --- [restartedMain] osboot.SpringApplication:應用程序運行失敗

org.springframework.beans.factory.UnsatisfiedDependencyException:創建名為“pessoaController”的bean時出錯:通過字段“repositorioPessoa”表達的依賴關系不滿足; 嵌套異常是 org.springframework.beans.factory.BeanCreationException:創建 br.com.itss.pmrun.dominio.erp.pessoa.repositorio.RepositorioPessoa 中定義的名稱為“repositorioPessoa”的 bean 時出錯,在應用程序上聲明的 @EnableJpaRepositories 中定義初始化方法失敗; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List br.com.itss.pmrun.dominio.erp.pessoa.repositorio.CustomRepositorioPessoa.listarPessoas(java.lang.String). 沒有找到類型 Pessoa 的屬性 listarPessoas。 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement:resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java.660) ~[spring-beans-5.3:4.jar.5.3.4] at org.springframework.beans.factory.annotation. AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement:inject(AutowiredAnnotationBeanPostProcessor.java.640) ~[spring-beans-5.3:4.jar.5.3.4] at org.springframework.beans.factory.annotation.InjectionMetadata:inject(InjectionMetadata.java.119) ~ [spring-beans-5.3:4.jar.5.3.4] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor:postProcessProperties(AutowiredAnnotationBeanPostProcessor.java.399) ~[spring-beans-5.3:4.jar.5.3. 4] 在 org.springframework.beans.factory.sup port.AbstractAutowireCapableBeanFactory:populateBean(AbstractAutowireCapableBeanFactory.java.1413) ~[spring-beans-5.3:4.jar.5.3.4] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory:doCreateBean(AbstractAutowireCapableBeanFactory.java.601) ~ [spring-beans-5.3:4.jar.5.3.4] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory:createBean(AbstractAutowireCapableBeanFactory.java.524) ~[spring-beans-5.3:4.jar.5.3. 4] 在 org.springframework.beans.factory.support.AbstractBeanFactory:lambda$doGetBean$0(AbstractBeanFactory.java.335) ~[spring-beans-5.3:4.jar..bean. .support.DefaultSingletonBeanRegistry:getSingleton(DefaultSingletonBeanRegistry.Z93F725A07423FE1C889F448B 33D21F46Z.234) ~[spring-beans-5.3:4.jar.5.3.4] at org.springframework.beans.factory.support.AbstractBeanFactory:doGetBean(AbstractBeanFactory.java.333) ~[spring-beans-5.3:4 .jar.5.3.4] at org.springframework.beans.factory.support.AbstractBeanFactory:getBean(AbstractBeanFactory.java.208) ~[spring-beans-5.3:4.jar.5.3.4] at org.springframework.beans .factory.support.DefaultListableBeanFactory:preInstantiateSingletons(DefaultListableBeanFactory.java.944) ~[spring-beans-5.3:4.jar.5.3.4] at org.springframework.context.support.AbstractApplicationContext:finishBeanFactoryInitialization(AbstractApplicationContext.java.917) ~[spring-context-5.3:4.jar.5.3.4] at org.springframework.context.support.AbstractApplicationContext:refre sh(AbstractApplicationContext.java.582) ~[spring-context-5.3:4.jar.5.3.4] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext:refresh(ServletWebServerApplicationContext.java.144) ~[spring -boot-2.4:3.jar.2.4.3] at org.springframework.boot.SpringApplication:refresh(SpringApplication.java.767) ~[spring-boot-2.4:3.jar.2.4.3] at org.springframework .boot.SpringApplication:refresh(SpringApplication.java.759) ~[spring-boot-2.4:3.jar.2.4.3] at org.springframework.boot.SpringApplication:refreshContext(SpringApplication.java.426) ~[spring- boot-2.4:3.jar.2.4.3] 在 org.springframework.boot.SpringApplication:run(SpringApplication.Z93F725A0 7423FE1C889F448B33D21F46Z.326) ~[spring-boot-2.4:3.jar.2.4.3] at org.springframework.boot.SpringApplication:run(SpringApplication.java.1311) ~[spring-boot-2.4:3.jar.2.4 .3] at org.springframework.boot.SpringApplication:run(SpringApplication.java.1300) ~[spring-boot-2.4:3.jar.2.4.3] at br.com.itss.pmrun.apiweb.Application:main (Application:java.24) ~[classes/.na] at java.base/jdk.internal.reflect:NativeMethodAccessorImpl.invoke0(Native Method) ~[na.na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl :invoke(NativeMethodAccessorImpl:java.62) ~[na.na] 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl:invoke3(DelegatingMethodAccessorImpl:java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl: 725A07423FE1C889F448B33D21F46Z.43) ~[na.na] at java.base/java.lang.reflect.Method:invoke(Method:java.566) ~[na.na] at org.springframework.boot.devtools.restart.RestartLauncher:運行(RestartLauncher.java.49)~[spring-boot-devtools-2.4:3.jar.2:4.3] 由。 org.springframework.beans:factory.BeanCreationException。 創建 br.com.itss.pmrun.dominio.erp.pessoa:repositorio 中定義的名稱為“repositorioPessoa”的 bean 時出錯:repositorio;RepositorioPessoa 在應用程序上聲明的@EnableJpaRepositories 中定義。 調用 init 方法失敗。 嵌套異常是 java:lang.IllegalArgumentException。 無法為方法 public abstract java.util.List br.com.itss.pmrun.dominio.erp.pessoa.repositorio.CustomRepositorioPessoa.listarPessoas(java.lang.String) 創建查詢。 沒有找到類型 Pessoa 的屬性 listarPessoas。 at org.springframework.beans.factory:support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) ~[spring-beans-5.3.4.jar.5.3.4] at org.springframework.beans.factory:support.AbstractAutowireCapableBeanFactory. doCreateBean(AbstractAutowireCapableBeanFactory.java:602) ~[spring-beans-5.3.4.jar.5.3.4] at org.springframework.beans.factory:support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans -5.3.4.jar.5.3.4] at org.springframework.beans.factory:support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.4.jar.5.3.4 ] 在 org.springframework.beans.factory:support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingl etonBeanRegistry.java:234) ~[spring-beans-5.3.4.jar.5.3.4] at org.springframework.beans.factory:support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3 .4.jar.5.3.4] at org.springframework.beans.factory:support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.4.jar.5.3.4] at org.springframework .beans.factory:config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.4.jar.5.3.4] at org.springframework.beans.factory:support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory. java:1380) ~[spring-beans-5.3.4.jar.5.3.4] 在 org.springframework.beans.factory:support.DefaultLista bleBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) ~[spring-beans-5.3.4.jar.5.3.4] at org.springframework.beans.factory:annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) ~ [spring-beans-5.3.4.jar.5.3:4]..: 26個常用框架省略造成的。 java.lang.IllegalArgumentException。 無法為方法 public abstract java.util.List br.com.itss.pmrun.dominio.erp.pessoa.repositorio.CustomRepositorioPessoa.listarPessoas(java.lang.String) 創建查詢。 沒有找到類型 Pessoa 的屬性 listarPessoas。 at org.springframework.data:jpa.repository.query.PartTreeJpaQuery:(PartTreeJpaQuery.java.96) ~[spring-data-jpa-2.4.5.jar.2.4.5] at org.springframework.data:jpa.repository .query.JpaQueryLookupStrategy$CreateQueryLookupStrategy:resolveQuery(JpaQueryLookupStrategy.java.107) ~[spring-data-jpa-2.4.5.jar.2.4.5] at org.springframework.data:jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy: resolveQuery(JpaQueryLookupStrategy.java.218) ~[spring-data-jpa-2.4.5.jar.2.4.5] at org.springframework.data:jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy:resolveQuery(JpaQueryLookupStrategy.java.81 ) ~[spring-data-jpa-2.4. 5.jar.2.4.5] at org.springframework.data:repository.core.support.QueryExecutorMethodInterceptor:lookupQuery(QueryExecutorMethodInterceptor.java.100) ~[spring-data-commons-2.4.5.jar.2.4.5] at org.springframework.data:repository.core.support.QueryExecutorMethodInterceptor:lambda$mapMethodsToQuery$1(QueryExecutorMethodInterceptor.java.93) ~[spring-data-commons-2.4.5.jar.2.4.5] at java:base/java: util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java.195) ~[na:na] at java:base/java.util.Iterator.forEachRemaining(Iterator.java.133) ~[na:na] at java:基礎/java.util.Collections$UnmodifiableCollection$1.forEachRemaining(Collections.Z93F725A07423FE1C889F448B33D21 F46Z.1054) ~[na:na] at java:base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java.1801) ~[na.na] at java:base/java:util.stream.AbstractPipeline. copyInto(AbstractPipeline.java.484) ~[na.na] at java:base/java:util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java.474) ~[na.na] at java:base/java:util. stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java.913) ~[na.na] at java:base/java:util.stream.AbstractPipeline.evaluate(AbstractPipeline.java.234) ~[na.na] at java:基礎/java:util.ZF7B44CFAFD5C52223D5498196C8A 2E7BZ.ReferencePipeline.collect(ReferencePipeline.java.578) ~[na.na] at org.springframework.data:repository.core.support.QueryExecutorMethodInterceptor:mapMethodsToQuery(QueryExecutorMethodInterceptor.java.95) ~[spring-data-commons-2.4 .5.jar.2.4.5] at org.springframework.data:repository.core.support.QueryExecutorMethodInterceptor:lambda$new$0(QueryExecutorMethodInterceptor.java.85) ~[spring-data-commons-2.4.5.jar.2.4 :5] at java:base/java.util.Optional.map(Optional.java.265) ~[na.na] at org.springframework.data:repository.core.support.QueryExecutorMethodInterceptor:(QueryExecutorMethodInterceptor.java.85) ~[spring-data-commons-2.4.5.jar.2.4.5] 在 org.springframework.data:repository.core.support.RepositoryFactorySupport :getRepository(RepositoryFactorySupport.java.303) ~[spring-data-commons-2.4.5.jar.2.4.5] at org.springframework.data:repository.core.support.RepositoryFactoryBeanSupport:lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java .323) ~[spring-data-commons-2.4.5.jar.2.4.5] 在 org:springframework.data.util.Lazy:getNullable(Lazy.java.230) 4.[spring-data-2. 5.jar.2.4.5] at org:springframework.data.util.Lazy:get(Lazy.java.114) ~[spring-data-commons-2.4.5.jar.2.4.5] at org.springframework.數據:repository.core.support.RepositoryFactoryBeanSupport:afterPropertiesSet(RepositoryFactoryBeanSupport.java.329)~[spring-data-commons-2.4.5.jar.2.51.5]0B4A29Z9C451.50B4A29Z9C.dataframework. 71493AE3215D69D9B0A6Z.repository.support.JpaRepositoryFactoryBean:afterPropertiesSet(JpaRepositoryFactoryBean.java.144) ~[spring-data-jpa-2.4.5.jar.2.4.5] at org.springframework:beans.factory.support.AbstractAutowireCapableBeanFactory:invokeInitMethods(AbstractAutowireCapableBeanFactory .java.1845) ~[spring-beans-5.3.4.jar.5.3.4] at org.springframework:beans.factory.support.AbstractAutowireCapableBeanFactory:initializeBean(AbstractAutowireCapableBeanFactory.java.1782) ~[spring-beans-5.3. 4.jar:5.3.4]..: 36個普通幀省略造成的。 org.springframework.data.mapping.PropertyReferenceException。 No property listarPessoas found for type Pessoa: at org.springframework.data.mapping:PropertyPath.(PropertyPath.java.90) ~[spring-data-commons-2.4.5.jar.framework.2.data] at org.springframework.data.mapping:PropertyPath.(PropertyPath.java.90) .mapping:PropertyPath.create(PropertyPath.java.437) ~[spring-data-commons-2.4.5.jar.2.4:5] at org.springframework.data.mapping:PropertyPath.create(PropertyPath.java.413) ~[spring-data-commons-2.4.5.jar.2.4:5] at org.springframework.data.mapping:PropertyPath.lambda$from$0(PropertyPath.java.366)~[spring-data-2.4. 5.jar.2.4:5] at java:base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java.330) ~[na:na] at org.springframework.data.mapping:PropertyPath.from(PropertyPath. Z93F725A074 23FE1C889F448B33D21F46Z.348) ~[spring-data-commons-2.4.5.jar.2.4:5] at org.springframework.data.mapping:PropertyPath.from(PropertyPath.java.331) ~[spring-data-commons-2.4 .5.jar.2.4.5] at org.springframework:data.repository.query.parser:Part.(Part.java.81) ~[spring-data-commons-2.4.5.jar.2.4.5] at org.springframework:data.repository.query.parser:PartTree$OrPart.lambda$new$0(PartTree.java.249) ~[spring-data-commons-2.4.5.jar.2.4:5] at java:base/ java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java.195) ~[na:na] at java:base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.Z93F725A07423FE1C889F448B33D21F46 Z:177) ~[na:na] at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java.948) ~[na:na] at java:base/java.util.stream.AbstractPipeline. copyInto(AbstractPipeline.java.484) ~[na:na] at java:base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java.474) ~[na:na] at java:base/java.util. stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java.913) ~[na:na] at java:base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java.234) ~[na:na] at java:基礎/java.util.stream.Re ferencePipeline.collect(ReferencePipeline.java.578) ~[na.na] at org.springframework:data.repository.query.parser:PartTree$OrPart.(PartTree.java.250.com.[spring-data-data-com) 5.jar.2.4.5] at org.springframework:data.repository.query.parser:PartTree$Predicate.lambda$new$0(PartTree.java.383) ~[spring-data-commons-2.4.5.jar. 2.4:5] at java:base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java.195) ~[na:na] at java:base/java.util.stream.ReferencePipeline$2$1.accept( ReferencePipeline.java:177) ~[na:na] 在 java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.Z93F7485A074423D21F8A074423D21F8 8) ~[na:na] at java:base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java.484) ~[na:na] at java:base/java.util.stream.AbstractPipeline.wrapAndCopyInto( AbstractPipeline.java.474) ~[na:na] at java:base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java.913) ~[na:na] at java:base/java.util. stream.AbstractPipeline.evaluate(AbstractPipeline.java.234) ~[na:na] at java:base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java.578) ~[na.na] at org.springframework: data.repository.query.parser:PartTree$Predicate.(Par tTree.java.384) ~[spring-data-commons-2.4.5.jar.2.4.5] at org.springframework:data.repository.query.parser:PartTree.(PartTree.java.92) ~[spring- data-commons-2.4.5.jar.2.4.5] at org.springframework:data.jpa.repository.query:PartTreeJpaQuery.(PartTreeJpaQuery.java.89) ~[spring-data-jpa-2.4.5.jar: 2.4.5] ...省略了62個常用框架

與目標 VM 斷開連接,地址:'javadebug',傳輸:'shared memory'

進程以退出代碼 0 結束

佩索控制器:

@RestController
@RequiredArgsConstructor
@RequestMapping("/pessoa")
public class PessoaController implements ListagemController<PessoaDto> {

    @Autowired
    private RepositorioPessoa repositorioPessoa;

    @Override
    public List<PessoaDto> listarSelects(String filtro) {
        return repositorioPessoa.listarPessoas(filtro);
    }
}

存儲庫佩索阿

@Repository
public interface RepositorioPessoa extends RepositorioBase<Pessoa>, CustomRepositorioPessoa {
}

CustomRepositorioPessoa

public interface CustomRepositorioPessoa {

    List<PessoaDto> listarPessoas(String filtro);
}

存儲庫PessoaImpl

@Repository
public class RespositorioPessoaImpl implements CustomRepositorioPessoa {

    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public List<PessoaDto> listarPessoas(String filtro) {

        var builder = this.entityManager.getCriteriaBuilder();
        var criteria = builder.createQuery(PessoaDto.class);
        var root = criteria.from(Pessoa.class);

        var selection = builder.construct(PessoaDto.class,
                root.get("id"),
                root.get("nome"),
                root.get("matricula"));

        criteria.select(selection);

        Specification specs = (root1, criteriaQuery, criteriaBuilder) -> {
            List<Predicate> filtros = new ArrayList<>();
            if(filtro != null && !filtro.isEmpty()) {
                criteriaBuilder.or(
                        criteriaBuilder.like(root1.get("nome"), "%" + filtro + "%"),
                        criteriaBuilder.like(root1.get("matricula"), "%" + filtro + "%")
                );
            }
            return criteriaBuilder.and(filtros.toArray(new Predicate[0]));
        };

        criteria.where(specs.toPredicate(root, criteria, builder));

        TypedQuery<PessoaDto> query = this.entityManager.createQuery(criteria);

        return query.getResultList();

    }
}

您的自定義存儲庫名稱必須是

CustomRepositorioPessoaImpl

這是 Spring 數據要求的。

它是接口名稱和后綴 Impl

請查看文檔https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

您已將RepositorioPessoa注釋為 Spring 存儲庫並擴展了CustomRepositorioPessoa接口。 使用@Repository注解的接口不需要實現。 這里 spring 正在嘗試創建RepositorioPessoa的實例,並且由於它具有從CustomRepositorioPessoa繼承的listarPessoas方法 spring 正在將listarPessoas名稱視為Pessoa實體的屬性,因此發生了錯誤。 所以你需要了解@Repository注解是如何工作的。

br.com.itss.pmrun.dominio.erp.pessoa.repositorio.CustomRepositorioPessoa.listarPessoas(java.lang.String)!
No property listarPessoas found for type Pessoa!```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM