Запуск приложения 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". он должен быть небольшим "А". Поэтому, пожалуйста, учтите это также.