对存储库间歇性地获取UnsatisfiedDependencyException

时间:2018-05-30 05:34:15

标签: spring-boot spring-data-cassandra

在我的项目中,我通过实现CrudRepository创建了一个存储库接口。我的底层数据库是Cassandra。我间歇性地遇到错误并且我的应用程序无法启动 -

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userHelper': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.org.retail.userops.repository.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

还有其他存储库接口正常工作。

我的春季启动应用程序 -

@SpringBootApplication
@Configuration
@ComponentScan( basePackages = "com.org.retail")
@EnableCassandraRepositories( basePackages = { "com.org.retail.userops.repository" })
public class UserApplication {

    /**
     * The main method.
     *
     * @param args
     *            the arguments
     */
    public static void main( String[] args) {
        SpringApplication.run(UserApplication.class, args);
    }

    /**
     * Rest template.
     *
     * @param builder
     *            the builder
     * @return the rest template
     */
    @Bean
    public RestTemplate restTemplate( RestTemplateBuilder builder) {
        return builder.build();
    }
}

这是UserRepository接口 -

package com.org.retail.userops.repository;

import java.util.List;

import org.springframework.data.cassandra.repository.Query;
import org.springframework.data.repository.CrudRepository;

import com.org.retail.userops.domain.User;

    public interface UserRepository extends CrudRepository<User, String> {

        @Query( "select * from user where userid=?0 and userstatus IN (?1)")
        List<User> findByUserIdAndUserStatus( String userId, List<String> statusList);
    }

有时应用程序正在起作用,有时候不起作用,所以很奇怪。我怀疑在加载存储库时是否存在任何Cassandra错误。有没有办法在spring boot中启动时看到sql错误?

1 个答案:

答案 0 :(得分:0)

在UserRepository类之上添加sudo npm install -g live-server (或@Repository@Service),它可能会解决问题。

但如果问题只是间歇性的,那么本地机器上的cassandra DB可能存在一些连接问题。

要查看要进行的查询,请在@Component文件

中添加这些查询
application.properties

要了解春天在幕后或启动时做什么,请添加:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
logging.level.org.hibernate.type=TRACE