Spring Data Cassandra:接口自动装配失败

时间:2016-09-09 22:56:22

标签: spring spring-data spring-data-cassandra

package lokesh.repository;

import org.springframework.data.cassandra.repository.Query;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.query.Param;
import com.model.User;

@org.springframework.stereotype.Repository
public interface UserOverview extends Repository<User, Integer>{

    @Query("select count(*) from users where name = :userName ")
    int overview(@Param("userName") String userName);

}

服务

package lokesh.service;

public UserService(){
    @Autowired
    private UserOverview userOverview; //Injection of autowired dependencies failed
}

主要

package lokesh;

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class UserApplication extends SpringBootServletInitializer {

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(UserApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class, args);
    }

}

我正在尝试编写自定义查询。所以我创建了一个扩展spring数据存储库的接口。我想在服务类中使用该接口来调用该接口中的方法。我得到了依赖失败的异常。谁能发现我的错误

2 个答案:

答案 0 :(得分:0)

建议将@Configuration类与应用程序的其余部分分开,在您的情况下使用main方法分类。

@Configuration类中,您应该标记要注入@Bean注释的bean,以便能够注入它们。

但是,我确实有@Repository注释,这是你尝试自动连线的bean。

尝试在@ComponentScan中添加一个包字符串,以便它可以将您的@Repository类标识为符合条件的自动连线bean。像这样:

@ComponentScan("com.package.to.scan") 

另一方面,接口不能作为bean,它不是实际的实例。请注意。

答案 1 :(得分:0)

在UserApplication类中,您使用的是ComponentScan批注,但未提供任何显式软件包名称。

尝试提供UserOverview类的包名称。 像这样:

@ComponentScan("lokesh.repository")