java无法自动连线。未找到“NoteRepository”类型的bean
下面是我的控制器类
@Controller
public class app {
@GetMapping(path = "/")
public @ResponseBody
String hello() {
return "Hello app";
}
}
当我在url中导航时,它运行良好。但当添加下面的代码时,它会显示"Could not autowire. No beans of 'NoteRepository' type found"
@Autowired
NoteRepository noteRepository;
// Create a new Note
@PostMapping("/notes")
public Note createNote(@Valid @RequestBody Note note) {
return noteRepository.save(note);
}
App controller类位于主类(运行应用程序)所在的相同包中。但当我们将上述代码添加到不同包中的控制器时,它不会显示错误。但当我们浏览url时,即使是一个简单的get方法,它也不起作用
我的主课在下面
@SpringBootApplication
@EnableJpaAuditing
public class CrudApplication {
public static void main(String[] args) {
SpringApplication.run(CrudApplication.class, args);
}
}
我的存储库类是
@Repository
public interface NoteRepository extends JpaRepository<Note, Long> {
}
我的项目结构
我想找到解决方案:
注入
NoteRepository
的实例。我总是收到消息“无法自动连线。找不到类型的bean”错误。Spring不能注入它,不管接口是在同一个包中还是在不同的包中我无法在控制器(
MyController
)中运行与应用程序入口点位于不同包中的方法
# 1 楼答案
您应该为spring添加包来扫描它们
# 2 楼答案
主要症状是:
默认情况下,Spring引导应用程序将只自动发现在主类之外的同一包中声明的bean。对于不同包中的bean,需要指定包含它们。您可以使用^{} 进行此操作
为了让Spring数据识别应该创建哪些存储库,您应该向主类添加
@EnableJpaRepositories
注释。另外,为了让Spring数据和JPA实现扫描实体,添加@EntityScan
: