Запуск приложения 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 - база данных с именем Users уже существует, и в ней есть таблица с названием Users с примером списка пользователей.

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>

РЕДАКТИРОВАТЬ: Добавление основного класса

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

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

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

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

Спасибо-

 M. Deinum01 июл. 2014 г., 19:58
Это скорее признак того, что с вашей настройкой что-то не так. Пожалуйста, добавьте любые дополнительные классы / файлы конфигурации, которые у вас есть.
 M. Deinum01 июл. 2014 г., 19:50
Видимо, он не читает вашиapplication.properties файл. Убедитесь, что он находится в корне пути к классу (src/main/resources) или когда в файловой системе рядом с вашей банкой. Как правило, вы разделяете пары ключ / значение в файле свойств с помощью= вместо: хотя последний должен работать. Я также не понимаю ваши настройки, просто удалите исключение для спящего режима и включите толькоhibernate-entitymanager без версии в качестве зависимости. Обо всем остальном позаботятся.
 M. Deinum01 июл. 2014 г., 20:44
EnableAutoConfiguration пытается выяснить, какие пакеты для сканирования сущностей, на основе пакета, в котором он находится. Возможно, вы захотите добавить@EntityScan указывая на пакет, который содержит ваши классы сущностей. Также обратите внимание наComponentScan будет сканировать, начиная с того же пакетаApplicationStart класс в. Может быть, вы можете включить свою структуру пакета в пост.
 Balasubramanian01 июл. 2014 г., 21:10
Проблема была в том, что ApplicationStart не находился в одном пакете с контроллером, хранилищем и моделью. После того, как они забили их в одном пакете, все заработало. Мне также не нужно было добавлять аннотацию @EntityScan. Спасибо за помощь :) Вы также можете добавить свой последний комментарий в свой ответ - это может помочь другим легко найти его :)
 Balasubramanian01 июл. 2014 г., 19:54
@ M.Deinum: Если я удалю это исключение, я получу следующее исключение:java.lang.IllegalArgumentException: Not an managed type: class models.User И мойapplication.properties находится в каталоге ресурсов.

Ответы на вопрос(2)

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

Решение Вопроса

application.properties находится в одном изподдерживаемые местоположения.

A / config subdir текущего каталога.Текущий каталогПакет 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 указать пакет (ы), которые содержат ваши лица.

 MattEdge31 дек. 2014 г., 23:13
@Abdull Если вы используете стартовый pom для JPA, то вам не нужна явная зависимость для hibernate-entitymanager
 Balasubramanian01 июл. 2014 г., 20:41
@ M.Denium: я также добавил основной класс. У меня, кажется, нет других настроек в приложении, кроме тех, которые я опубликовал.
 Balasubramanian01 июл. 2014 г., 20:01
1) Мои application.properties находятся в каталоге ресурсов. 2) Я применил конфигурацию зависимостей, которую вы дали, и мне кажется, что я получаю следующее исключение:java.lang.IllegalArgumentException: Not an managed type: class models.User
 Abdull31 окт. 2014 г., 00:34
Является ли явная зависимость отhibernate-entitymanager нужно? Вspring-boot-starter-data-jpa:1.1.8.RELEASEЯ вижу зависимость отhibernate-entitymanager.
 M. Deinum01 июл. 2014 г., 20:11
Что в основном указывает на то, что он уже идет дальше, чем с зависимостями (по-видимому, проходит конфигурацию источника данных) и пытается создать репозитории. Пожалуйста, добавьте ваш основной класс к оригинальному сообщению.

Ваш ответ на вопрос