我遇到弹簧靴问题。我创建了一个简单的项目示例来检查h2数据库是否有效。结果不起作用。 你能看看我做错了吗?
数据库
public class DatabaseInit implements CommandLineRunner {
@Autowired
private UserRepository userRepository;
@Override
public void run(String... arg0) throws Exception {
userRepository.save(new User("Aonso"));
userRepository.save(new User("Jordan"));
}
}
控制器
@Controller
public class DemoController {
@Autowired
private UserRepository userRepository;
@RequestMapping("/users")
public Collection<User> getUsers(){
return this.userRepository.findAll();
}
}
User.java
@Entity
public class User {
@Id
@GeneratedValue
private long id;
private String name;
public User(){}
public User(String name){
this.name = name;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
UserRespository
public interface UserRepository extends JpaRepository<User, Long> {
}
应用
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
答案 0 :(得分:2)
您正在为项目创建混合包结构。您的@SpringBootApplication
位于com.example
,您的控制器位于demo.controllers
。 Spring Boot在其包和所有子包中启用类路径扫描,除非配置不同。它找不到您的控制器(Spring Boot没有理由开始扫描整个类路径)。
我们实际上是在本月在Devoxx举行的大学课程中解释了这个(以及更多),所以你可以want to check it out(检查组件扫描说明在5点左右)。