Запуск приложения MVC с помощью Spring Boot + Hibernate + MySql

Я новичок в среде Spring. Я пытался разработать базовое приложение MVC с использованием SpringBoot с 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: root

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>

EDIT: добавление основного класса

ГЛАВНЫЙ КЛАСС

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

Это текущая настройка моего приложения. Я даже не знаю, где искать ошибки, и учебные пособия в Интернете не помогли моей причине. Таким образом, любая помощь по устранению исключения очень ценится.

Прокомментируйте, если требуется дополнительная информация.

Спасибо.

Ответ 1

Убедитесь, что ваш application.properties находится в одном из поддерживаемых местоположений.

  • Подкаталог A/config текущего каталога.
  • Текущий каталог
  • Пакет classpath/config
  • Путь к корню класса

Список упорядочен по приоритету (места, расположенные выше в списке, переопределяют нижние элементы).

Хотя разделение ваших пар ключ/значение в файле свойств с : должно работать, я предлагаю придерживаться более широко используемого разделителя =.

У вашей пом есть ненужный беспорядок, который я предлагаю вам двигаться. Вам нужна только зависимость от 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, чтобы указать пакет (ы), которые содержат ваши объекты.

Ответ 2

Я также столкнулся с одной и той же проблемой, но причина была совсем другой, я пробовал все, что упоминалось выше, во всех ответах, принимающих 2 часа. Но, наконец, выяснилось, что имя файла "Application.properties" начинается с капитала "A". он должен быть небольшим "А". Поэтому, пожалуйста, учтите это также.