2016-11-20 158 views
0

我在弹簧启动时遇到问题。我创建了一个简单的项目示例来检查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); 
    } 
} 
+1

如果你要分享实际的项目,那将会更加有效,这样我们就可以运行它并查看出了什么问题。你粘贴的所有代码看起来都不错,但你并没有粘贴最重要的代码:错误是什么? –

+0

谢谢,你可以在这里下载这个项目:https://www.dropbox.com/sh/qr29232jif8bbqb/AADLMgM7uszGjxHXYKhrqLLHa?dl=0 – CSantos

回答

0

您正在为您的项目创建混合包结构。您的@SpringBootApplication位于com.example,您的控制器位于demo.controllers。除非配置不同,否则Spring Boot会在其包和所有子包中启用类路径扫描。它不会找到你的控制器(Spring Boot没有理由开始扫描整个类路径)。

我们实际上在本月在Devoxx给出的大学课程中解释了这个(以及更多),因此您可以want to check it out(查看组件扫描说明的5:00左右)。