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数据存储库的接口。我想在服务类中使用该接口来调用该接口中的方法。我得到了依赖失败的异常。谁能发现我的错误
答案 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")