Как указано в комментариях, вам может быть лучше использовать кеш (предпочтительно) или БД. Но если это невозможно, вы всегда можете использовать какое-либо решение в памяти, которое имеет свои собственные риски, например, как поддерживать состояние в разных JVM (в случае, если имеется несколько серверов)?
Теперь, когда мы имеем это в стороне, давайте посмотрим, хотите ли вы сделать это с кешем / базой данных в памяти.
Кеш Изучите реализованную реализацию кеша в памяти Google Guava Library или что-то подобное. Со страницы -
Как правило, утилиты кэширования Guava применяются всякий раз, когда:
- Вы готовы потратить часть памяти для повышения скорости.
- Вы ожидаете, что ключи иногда будут запрашиваться более одного раза.
- В вашем кеше не требуется хранить больше данных, чем помещается в ОЗУ. (Кэши Guava являются локальными для одного запуска вашего приложения. Они не хранят данные в файлах или на внешних серверах. Если это не соответствует вашим потребностям, рассмотрите инструмент, подобный Memcached .)
Загрузка токенов во время приложения bootstrap путем реализации CacheLoader
, которая будет вызываться каждый раз, когда требуется новое значение.
LoadingCache<String, String> tokensByResource = CacheBuilder.newBuilder()
.maximumSize(1000)
.build(
new CacheLoader<String, String>() {
public Token load(String resource) throws AnyException {
return createToken(key);
}
});
Получение токена кэша перед каждым вызовом REST-
try {
return tokensByResource.get(key);
} catch (ExecutionException e) {
throw new RuntimeException(e.getCause());
}
База данных
Рассмотрите возможность использования встроенной в память / встроенной базы данных, которую Spring Boot поддерживает , например, H2 . Если вы не хотите терять данные при перезапуске сервера, можно указать местоположение файла (подробнее об этом ниже). H2 также поставляется с консолью , которая может быть полезна для отладки / создания отчетов и т. Д. c.
Добавить зависимость maven:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
Добавить это в applicationaton.properties -
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
#Use following to preserve data to file between restarts
spring.datasource.url=jdbc:h2:file:/data/demo
Как только вы настроите эту настройку, обработайте ее как любую другую обычную базу данных SQL для операций CRUD. Во время инициализации приложения создайте токен bootstrap и сохраните его в H2
.