У меня есть проект с начальной загрузкой, в котором конфигурация базы данных должна быть сохранена при первом запуске приложения пользователем после запроса данных соединения (URL-адрес сервера, имя пользователя и пароль). файл application.properties
, вставленный в WAR-файл приложения, должен выглядеть примерно так:
security.basic.enabled=false
# THYMELEAF (ThymeleafAutoConfiguration)
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=false
# Multipart Configuration
spring.servlet.multipart.maxFileSize = 150MB
spring.servlet.multipart.maxRequestSize = 150MB
spring.servlet.multipart.fileSizeThreshold = 5MB
# Setting max size of post requests to 6MB (default: 2MB)
server.tomcat.max-http-post-size=157286400
После первого запуска следует создать второй application.properties
с конфигурацией базы данных. Но прямо сейчас, когда я пытаюсь запустить проект с указанной выше конфигурацией, он не запускается, показывая следующее сообщение об ошибке:
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
без предоставления приложению изменения для создания второго файла конфигурации с Свойства базы данных.
Как я могу заставить приложение запускаться в первый раз, даже без базы данных?
update
Хорошо, тогда я избавиться от этого сообщения об ошибке, сохранив эти 2 зависимости на моем pom.xml
:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.4.1</version>
</dependency>
, и теперь приложения работают без ошибок, и я могу открыть страницу установки для создания базы данных на * Сервер 1046 * и импортируйте исходные данные (включая пользовательские данные).
Но я замечаю, что эти исходные данные не сохраняются на сервере postgresql (несмотря на то, что база данных и все таблицы создаются нормально) , Я подозреваю, что они создаются в гипер-базе данных Sql в памяти, что мне совсем не помогает.
Я предполагаю, что это произошло потому, что я автоматически связал некоторые классы Dao для этих объектов в моем классе InstallService, и код создает данные только на postgresql, где я непосредственно устанавливаю соединение с этим указанным c сервером.
Считаем, что метод, ответственный за заполнение исходных данных в моей базе данных, выглядит примерно так:
public void criarUsuario(String user, String pass, String nome, String sobrenome, String email) {
Usuario novo = new Usuario();
novo.setUsername(user);
novo.setPassword(pass);
novo.setFirstName(nome);
novo.setLastName(sobrenome);
novo.setEmail(email);
novo.setEnabled(true);
novo.setLocked(false);
novo.setCredenciais(new ArrayList<Credencial>());
novo.getCredenciais().add( credencialDao.findBy("nome", "admin") );
usuarioDao.insert(novo);
...
}
Что я мог бы изменить здесь, чтобы сохранить эти данные в базе данных postgresql вместо гипер-базы данных Sql?
update 2
Теперь мне удалось запустить приложение, даже имея только зависимость postgresql
от моего pom.xml
. Я сделал это, добавив начальную конфигурацию на моем первом application.properties
(locatd на /src/main/resources
):
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/appdata
spring.datasource.username=...
spring.datasource.password=..
spring.datasource.continue-on-error=true
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=none
spring.jpa.generate-ddl=false
Но когда я пытался получить доступ к приложению в браузере, я получил сообщение о том, что база данных не существуют (конечно, нет, когда я запускаю приложение в первый раз, когда у меня есть определенный c поток для создания базы данных, таблиц и заполнения исходных данных).
есть ли способ подавить эту "базу данных не существует "ошибка при запуске проекта?