Skip to content

Settings

Roman Kuzmin edited this page Feb 17, 2025 · 6 revisions

📌 Настройки проекта StarBank (application.properties, Maven pom.xml)

Файл application.properties содержит основные настройки сервиса StarBank. Здесь определены параметры подключения к базам данных, кеширование, логирование и интеграция с Telegram Bot.

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

spring.application.name=starbank

Определяет имя приложения Spring Boot.


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

H2 (файловая база данных)

Используется для хранения транзакций пользователей.

application.recommendations-db.url=${h2.datasource.url:jdbc:h2:file:./transaction;DB_CLOSE_DELAY=-1;ACCESS_MODE_DATA=r}
  • DB_CLOSE_DELAY=-1 – база не закрывается при завершении сессии.
  • ACCESS_MODE_DATA=r – доступ только на чтение.

PostgreSQL (основная база данных)

Используется для хранения динамических правил и статистики.

spring.datasource.url=${postgres-url:jdbc:postgresql://localhost:5432/starbank}
spring.datasource.username=${postgres-login}
spring.datasource.password=${postgres-passwd}
spring.datasource.driver-class-name=org.postgresql.Driver
  • spring.datasource.url – JDBC URL для подключения к PostgreSQL.
  • spring.datasource.username и spring.datasource.password – учетные данные.
  • driver-class-name – драйвер PostgreSQL.

Задание параметров через VM options

Эти переменные можно задать через VM-параметры при запуске приложения:

-Dpostgres-url=jdbc:postgresql://localhost:5432/starbank 
-Dpostgres-login=postgres 
-Dpostgres-passwd=mysecretpassword

Другие способы передачи параметров:

  • Через переменные окружения
    export POSTGRES_URL=jdbc:postgresql://localhost:5432/starbank
    export POSTGRES_LOGIN=postgres
    export POSTGRES_PASSWD=mysecretpassword
  • Через аргументы командной строки
    java -jar starbank.jar --postgres-url=jdbc:postgresql://localhost:5432/starbank --postgres-login=postgres --postgres-passwd=mysecretpassword

🔹 Настройки Hibernate

spring.jpa.hibernate.ddl-auto=validate
spring.jpa.properties.hibernate.jdbc.batch_size=20
spring.jpa.properties.hibernate.order_updates=true
spring.jpa.properties.hibernate.order_inserts=true
  • ddl-auto=validate – схема БД проверяется, но не изменяется автоматически.
  • batch_size=20 – увеличивает производительность за счет пакетных обновлений.
  • order_updates/order_inserts – группировка SQL-операций для оптимизации.

🔹 Liquibase (миграции БД)

spring.liquibase.enabled=true
spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml
spring.liquibase.contexts=prod
  • liquibase.enabled=true – включает автоматическое применение миграций.
  • change-log – путь к файлу миграций.
  • contexts=prod – применяет изменения только в production-контексте.

🔹 Кеширование (Caffeine Cache)

spring.cache.type=caffeine

Используется для кеширования данных в памяти, что ускоряет выполнение повторяющихся запросов.


🔹 Логирование

logging.level.com.skypro.starbank=DEBUG
#logging.level.liquibase=DEBUG
  • logging.level.com.skypro.starbank=DEBUG – включает подробные логи работы приложения.
  • logging.level.liquibase=DEBUG – можно включить для отладки миграций.

🔹 Интеграция с Telegram Bot

telegram.bot.username=${telegram-botname}
telegram.bot.token=${telegram-token}
telegram.bot.default-command=${telegram-default-command:help}
  • telegram.bot.username – имя Telegram-бота.
  • telegram.bot.token – токен доступа.
  • telegram.bot.default-command – команда по умолчанию (по умолчанию help).

📌 Дополнения для Maven (pom.xml)

Файл pom.xml содержит зависимости и плагины, необходимые для работы проекта.

🔹 Основные зависимости

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>2.2.224</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.ben-manes.caffeine</groupId>
        <artifactId>caffeine</artifactId>
        <version>3.1.8</version>
    </dependency>
    <dependency>
        <groupId>org.telegram</groupId>
        <artifactId>telegrambots</artifactId>
        <version>6.9.7.1</version>
    </dependency>
</dependencies>

🔹 Плагины сборки

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>build-info</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Теперь pom.xml полностью готов для работы с Spring Boot, PostgreSQL, H2, Liquibase, Caffeine Cache и Telegram API.

Clone this wiki locally