Skip to content
spring.application.name=websocket8_4
spring.main.web-application-type=reactive

spring.r2dbc.url=r2dbc:postgresql://localhost:5432/somedb
spring.r2dbc.username=someuser
spring.r2dbc.password=somepass

logging.level.org.springframework.r2dbc=DEBUG
logging.level.io.r2dbc.postgresql=DEBUG

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.ddl-auto=update

Спасибо за предоставление файла конфигурации. Давайте проанализируем его:

Анализ конфигурации приложения

Основные настройки

spring.application.name=websocket8_4
spring.main.web-application-type=reactive
  • Имя приложения установлено как "websocket8_4"
  • Приложение настроено как реактивное

Настройки базы данных

R2DBC настройки

spring.r2dbc.url=r2dbc:postgresql://localhost:5432/somedb
spring.r2dbc.username=someuser
spring.r2dbc.password=somepass
  • Использует PostgreSQL через R2DBC
  • База данных работает локально на порту 5432
  • Имя базы данных: somedb

Логирование

logging.level.org.springframework.r2dbc=DEBUG
logging.level.io.r2dbc.postgresql=DEBUG
  • Подробное логирование R2DBC операций
  • Дополнительное логирование для PostgreSQL драйвера

JPA настройки

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.ddl-auto=update
  • Отображение SQL запросов в логах
  • Форматирование SQL для читаемости
  • Использование PostgreSQL диалекта
  • Автоматическое обновление схемы базы данных

Особенности и потенциальные проблемы

  1. Смешанная конфигурация
  2. Присутствуют настройки как для R2DBC, так и для JPA
  3. Это может вызвать конфликты или путаницу

  4. Безопасность

  5. Учетные данные базы данных указаны в открытом виде
  6. Рекомендуется использовать переменные окружения или внешнюю конфигурацию

  7. Режим обновления схемы

  8. ddl-auto=update может быть рискованным в продакшене
  9. Рекомендуется использовать миграции базы данных

Рекомендации по улучшению

  1. Разрешить конфликт между R2DBC и JPA:
  2. Выбрать один подход (предпочтительно R2DBC для реактивного приложения)
  3. Удалить неиспользуемые настройки

  4. Улучшить безопасность: properties spring.r2dbc.url=${DATABASE_URL} spring.r2dbc.username=${DATABASE_USER} spring.r2dbc.password=${DATABASE_PASSWORD}

  5. Рассмотреть использование миграций базы данных:

  6. Использовать Liquibase или Flyway
  7. Отключить автоматическое обновление схемы

Дополнительные замечания: 1. Конфигурация содержит смесь реактивных (R2DBC) и нереактивных (JPA) настроек 2. Высокий уровень логирования полезен для разработки, но может быть избыточным для продакшена 3. Автоматическое обновление схемы базы данных может быть рискованным в реальном окружении

Для полного понимания работы приложения осталось увидеть: 1. UpperCaseHandler 2. LowerCaseHandler

Готов к получению следующих файлов.