一尘不染

使用Spring Boot + Hibernate + MySql运行MVC应用

spring-boot

我是Spring环境的新手。我试图使用SpringBoot开发一个基本的MVC应用程序,并将Hibernate作为ORM,将MYSQL作为数据库。我在设置依赖项和配置时遇到了很多麻烦。目前,我对以下错误感到震惊,但无法解决该错误。

org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.

这是我的应用程序中的设置。它没有 服务层和jsp页面, 以避免混乱

数据库:

MySql-一个名为“用户”的数据库已经存在,并且具有一个名为“用户”的表以及一个示例用户列表

User.java(模型)

@Entity
@Table(name = "Users")
public class User {

    @Id
    @GeneratedValue
    public String id;

    public String username;

    public String firstname;

    public String lastname;

    public String password;
}

UserRepository:

@Repository
@Table(name = "Users")
public interface UserRepository extends JpaRepository<User, String> {
}

UserController:

@RestController
public class UserController {

    private UserRepository userRepository;

    @Autowired
    public UserController(UserRepository userRepository)
    {
        this.userRepository = userRepository;
    }

    @RequestMapping("user")
    public void getUser(@RequestParam("id") String id) {
         User user = userRepository.findOne(id);
    }

}

Application.properties:

server.port:9000

spring.datasource.url:jdbc:mysql:// localhost / Users

spring.datasource.driverClassName:com.mysql.jdbc.Driver

spring.datasource.username:根

spring.datasource.password:

POM.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.3.RELEASE</version>
</parent>

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-entitymanager</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- HIBERNATE -->

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.0.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.0.Final</version>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <optional>true</optional>
    </dependency>

    <!-- Spring ORM, works with Hibernate -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
    </dependency>

    <!-- MYSQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

</dependencies>

编辑:添加主类

主班

@ComponentScan
@Configuration
@EnableAutoConfiguration
public class ApplicationStart {
    public static void main(String[] args)
    {
        SpringApplication.run(ApplicationStart.class, args);
    }
}

这是我的应用程序的当前设置。我什至不知道在哪里寻找错误,并且互联网上的教程对我的事业没有帮助。因此,非常感谢有关如何解决异常的任何帮助。

如果需要更多信息,请发表评论。

谢谢-


阅读 347

收藏
2020-05-30

共1个答案

一尘不染

确保您application.properties位于受支持的位置之一

  1. 当前目录的/ config子目录。
  2. 当前目录
  3. 类路径/ config包
  4. 类路径根

该列表按优先级排序(列表中较高的位置优先于较低的项目)。

尽管用a分隔属性文件中的键/值对:应该可以,但我建议坚持使用更常用的=分隔符。

您的pom包含一些不必要的混乱,我建议您移动。您只需要对mysql-connector- java其他所有杂物的依赖关系即可(其他依赖关系是通过您依赖的入门项目提供的)。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MYSQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

这些应该是您需要的一切,版本和传递依赖项由spring-boot-dependency pom.xml负责。(首发父母的祖父母)。

使用@EnableAutoConfiguration注释时,带有注释的类还将用于确定从哪个包开始扫描。通常,您将在您的入门类上添加此批注。建议将此应用程序类放在顶级包中(即your.package.application.StarterClass),所有其他包应为该包的子包。这样,将自动检测所有类别。

如果无法做到这一点,则可能需要添加其他内容@ComponentScan以指定要从中开始扫描的基本程序包,并@EntityScan指定包含您的实体的程序包。

2020-05-30