【发布时间】:2018-02-05 05:29:06
【问题描述】:
我的控制器类在下面。
@Controller
public class app {
@GetMapping(path = "/")
public @ResponseBody
String hello() {
return "Hello app";
}
}
当我浏览网址时,它工作正常。但是当添加下面的代码时,它会显示"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);
}
应用程序控制器类位于主类(运行应用程序)所在的同一个包中。但是当我们将上述代码添加到不同包中的控制器时,它不会显示错误。但是当我们通过 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) 中运行与应用程序入口点不同的包中的方法。
【问题讨论】:
-
完成。检查更新的。
-
您的代码看起来不错。 repo 类可能没有被组件扫描。
-
尝试将
@EnableJpaRepositories添加到您的配置类 -
将您的
CrudApplication移动到com.demo而不是子包,这样它将扫描所有包并自动检测存储库和实体。 -
@M.Deinum 你是对的。我应该在 CRUD(main) 包中创建模型、控制器包。
标签: java spring spring-boot