Config弹簧启动项目
问题描述:
我在弹簧启动时遇到问题。我创建了一个简单的项目示例来检查h2数据库是否工作。结果不起作用。 你能看看我做错了什么吗?Config弹簧启动项目
数据库
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> {
}
App
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
答
您正在为您的项目创建混合包结构。您的@SpringBootApplication
位于com.example
,您的控制器位于demo.controllers
。除非配置不同,否则Spring Boot会在其包和所有子包中启用类路径扫描。它不会找到你的控制器(Spring Boot没有理由开始扫描整个类路径)。
我们实际上在本月在Devoxx给出的大学课程中解释了这个(以及更多),因此您可以want to check it out(查看组件扫描说明的5:00左右)。
如果你要分享实际的项目,那将会更加有效,这样我们就可以运行它并查看出了什么问题。你粘贴的所有代码看起来都不错,但你并没有粘贴最重要的代码:错误是什么? –
谢谢,你可以在这里下载这个项目:https://www.dropbox.com/sh/qr29232jif8bbqb/AADLMgM7uszGjxHXYKhrqLLHa?dl=0 – CSantos