Сообщения

Сообщения за март, 2020

Spring Boot: вызов REST сервисов с помощью RestTemplate

Изображение
Если вам нужно вызывать удаленные REST службы из вашего приложения, вы можете использовать класс RestTemplate Spring Framework. Поскольку экземпляры RestTemplate часто необходимо настраивать перед использованием, Spring Boot не предоставляет ни одного автоматически настроенного компонента RestTemplate. Однако он автоматически настраивает RestTemplateBuilder, который может использоваться для создания экземпляров RestTemplate при необходимости. Автоматически настроенный RestTemplateBuilder гарантирует, что разумные HttpMessageConverters будут применены к экземплярам RestTemplate. Следующий код показывает типичный пример: @Service public class MyService { private final RestTemplate restTemplate; public MyService(RestTemplateBuilder restTemplateBuilder) { this.restTemplate = restTemplateBuilder.build(); } public Details someRestCall(String name) { return this.restTemplate.getForObject("/{name}/details", Details.class, name); } } Res

Spring Boot: обмен сообщениями, тестирование с помощью Embedded Kafka

Изображение
Spring для Apache Kafka предоставляет удобный способ тестирования проектов с помощью встроенного брокера Apache Kafka. Чтобы использовать эту функцию, аннотируйте тестовый класс с помощью @EmbeddedKafka из модуля spring-kafka-test. Чтобы автоконфигурация Spring Boot работала с вышеупомянутым встроенным брокером Apache Kafka, необходимо переназначить системное свойство для адресов встроенного брокера (заполняемое EmbeddedKafkaBroker) в свойство конфигурации Spring Boot для Apache Kafka. Есть несколько способов сделать это: 1. Укажите системное свойство для сопоставления адресов встроенных брокеров с серверами spring.kafka.bootstrap в тестовом классе: static { System.setProperty(EmbeddedKafkaBroker.BROKER_LIST_PROPERTY, "spring.kafka.bootstrap-servers"); } 2. Настройте имя свойства в аннотации @EmbeddedKafka: @EmbeddedKafka(topics = "someTopic", bootstrapServersProperty = "spring.kafka.bootstrap-servers") 3. Используйте заполнител

Spring Boot: обмен сообщениями, дополнительные свойства Kafka

Изображение
Свойства, поддерживаемые автоматической настройкой по большей части (дефис или camelCase) отображаются напрямую в точечные свойства Apache Kafka. Первые несколько из этих свойств применяются ко всем компонентам (производителям (producers), потребителям (consumers), администраторам (admins) и потокам (streams)), но могут быть указаны на уровне компонентов, если вы хотите использовать другие значения. Apache Kafka обозначает свойства со значением HIGH, MEDIUM или LOW. Автоконфигурация Spring Boot поддерживает все свойства HIGH важности, некоторые выбранные свойства MEDIUM и LOW и любые свойства, которые не имеют значения по умолчанию. Только подмножество свойств, поддерживаемых Kafka, доступно непосредственно через класс KafkaProperties. Если вы хотите настроить производителя или потребителя с дополнительными свойствами, которые не поддерживаются напрямую, используйте следующие свойства: spring.kafka.properties.prop.one=first spring.kafka.admin.properties.prop.two=second spring.kaf

Spring Boot: обмен сообщениями, Kafka Streams

Изображение
Spring для Apache Kafka предоставляет фабричный компонент для создания объекта StreamsBuilder и управления жизненным циклом его потоков. Spring Boot автоматически конфигурирует требуемый компонент KafkaStreamsConfiguration, если kafka-streams находится в пути к классам, а Kafka Streams включены с помощью аннотации @EnableKafkaStreams. Включение Kafka Streams означает, что должны быть установлены серверы идентификатора приложения и загрузчика. Первый может быть настроен с использованием spring.kafka.streams.application-id, по умолчанию это spring.application.name, если не задано. Последний может быть установлен глобально или специально переопределен только для потоков. Несколько дополнительных свойств доступны с использованием выделенных свойств; другие произвольные свойства Kafka могут быть установлены с помощью пространства имен spring.kafka.streams.properties. Чтобы использовать фабричный компонент, просто подключите StreamsBuilder к своему @Bean, как показано в следующем примере:

Spring Boot: обмен сообщениями, Apache Kafka

Изображение
Apache Kafka поддерживается посредством автоматической настройки проекта spring-kafka. Конфигурация Kafka контролируется внешними параметрами конфигурации в spring.kafka.*. Например, вы можете объявить следующий раздел в application.properties: spring.kafka.bootstrap-servers=localhost:9092 spring.kafka.consumer.group-id=myGroup Чтобы создать topic при запуске, добавьте компонент типа NewTopic. Если topic уже существует, bean игнорируется. Отправка сообщения Spring KafkaTemplate автоматически настраивается, и вы можете автоматически связывать его непосредственно с вашими компонентами, как показано в следующем примере: @Component public class MyBean { private final KafkaTemplate kafkaTemplate; @Autowired public MyBean(KafkaTemplate kafkaTemplate) { this.kafkaTemplate = kafkaTemplate; } // ... } Если свойство spring.kafka.producer.transaction-id-prefix определено, KafkaTransactionManager настраивается автоматически. Кроме того, если bean-ко

Spring Boot: обмен сообщениями, AMQP, RabbitMQ, отправка и получение сообщения

Изображение
Отправка сообщения Spring AmqpTemplate и AmqpAdmin настраиваются автоматически, и вы можете автоматически связывать их непосредственно с вашими компонентами, как показано в следующем примере: import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class MyBean { private final AmqpAdmin amqpAdmin; private final AmqpTemplate amqpTemplate; @Autowired public MyBean(AmqpAdmin amqpAdmin, AmqpTemplate amqpTemplate) { this.amqpAdmin = amqpAdmin; this.amqpTemplate = amqpTemplate; } // ... } RabbitMessagingTemplate может быть введен аналогичным образом. Если bean-компонент MessageConverter определен, он автоматически связывается с автоматически настроенным AmqpTemplate. При необходимости любой org.springframework.amqp.core.Queue, определенный как bean-компонент, автоматиче

Spring Boot: обмен сообщениями, AMQP, поддержка RabbitMQ

Изображение
Расширенный протокол очереди сообщений (AMQP, Advanced Message Queuing Protocol) - это независимый от платформы протокол проводного уровня для промежуточного программного обеспечения, ориентированного на сообщения. Проект Spring AMQP применяет основные концепции Spring для разработки решений для обмена сообщениями на основе AMQP. Spring Boot предлагает несколько удобств для работы с AMQP через RabbitMQ, включая spring-boot-starter-amqp стартер. Поддержка RabbitMQ RabbitMQ - это легкий, надежный, масштабируемый и переносимый брокер сообщений на основе протокола AMQP. Spring использует RabbitMQ для связи по протоколу AMQP. Конфигурация RabbitMQ контролируется внешними конфигурационными свойствами в spring.rabbitmq.*. Например, вы можете объявить следующий раздел в application.properties: spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=secret В качестве альтернативы вы можете настроить то же соединение, используя а

Spring Boot: обмен сообщениями, JMS, отправка и получение сообщения

Изображение
Отправка сообщения Spring JmsTemplate настраивается автоматически, и вы можете автоматически связать его с вашими компонентами, как показано в следующем примере: import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Component; @Component public class MyBean { private final JmsTemplate jmsTemplate; @Autowired public MyBean(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } // ... } JmsMessagingTemplate может быть введен подобным образом. Если определен компонент DestinationResolver или MessageConverter, он автоматически связывается с автоматически настроенным JmsTemplate. Получение сообщения При наличии инфраструктуры JMS любой компонент может быть аннотирован @JmsListener для создания конечной точки слушателя. Если JmsListenerContainerFactory не был определен, по умолчанию настраивается автоматически. Если определены bean-объекты Destinati

Spring Boot: обмен сообщениями, JMS, поддержка Artemis

Изображение
Поддержка Artemis Spring Boot может автоматически настраивать ConnectionFactory, когда он обнаруживает, что Artemis доступен на пути к классам. Если посредник (broker) присутствует, встроенный посредник (embedded broker) автоматически запускается и настраивается (если свойство mode не было явно установлено). Поддерживаемыми режимами являются embedded (чтобы явно указать, что требуется встроенный посредник и что должна возникнуть ошибка, если посредник недоступен на пути к классам), и native (для подключения к посреднику с использованием транспортного протокола netty). Когда последний настроен, Spring Boot настраивает ConnectionFactory, который подключается к посреднику, работающему на локальном компьютере, с настройками по умолчанию. Если вы используете spring-boot-starter-artemis, предоставляются необходимые зависимости для подключения к существующему экземпляру Artemis, а также инфраструктура Spring для интеграции с JMS. Добавление org.apache.activemq:artemis-jms-server в ваше прил

Spring Boot: обмен сообщениями, JMS, ActiveMQ

Изображение
Обмен сообщениями Spring Framework предоставляет обширную поддержку для интеграции с системами обмена сообщениями, от упрощенного использования JMS API с использованием JmsTemplate до полной инфраструктуры для асинхронного получения сообщений. Spring AMQP предоставляет аналогичный набор функций для расширенного протокола очереди сообщений (Advanced Message Queuing Protocol). Spring Boot также предоставляет параметры автоматической настройки для RabbitTemplate и RabbitMQ. Spring WebSocket изначально включает в себя поддержку обмена сообщениями STOMP, а Spring Boot поддерживает его через стартеры и небольшое количество автоконфигурации. Spring Boot также поддерживает Apache Kafka. JMS Интерфейс javax.jms.ConnectionFactory предоставляет стандартный метод создания javax.jms.Connection для взаимодействия с JMS-брокером. Хотя Spring нуждается в ConnectionFactory для работы с JMS, вам, как правило, нет необходимости использовать его непосредственно самостоятельно, и вместо этого вы можете

Spring Boot: поставщики кэша, Simple, отключенный кэш

Изображение
Simple (Простой) Если ни один из других поставщиков не может быть найден, настраивается простая реализация, использующая ConcurrentHashMap в качестве хранилища кэша. Это значение по умолчанию, если в вашем приложении нет библиотеки кэширования. По умолчанию кэши создаются по мере необходимости, но вы можете ограничить список доступных кэшей, установив свойство cache-names. Например, если вам нужны только кэши cache1 и cache2, установите свойство cache-names следующим образом: spring.cache.cache-names=cache1,cache2 Если вы сделаете это, и ваше приложение использует кэш, которого нет в списке, то оно завершится с ошибкой во время выполнения, когда кэш необходим, но не при запуске. Это похоже на поведение «настоящих» поставщиков кэша, если вы используете необъявленный кэш. Выключенный кэш Когда в вашей конфигурации присутствует @EnableCaching, также ожидается подходящая конфигурация кэша. Если вам необходимо полностью отключить кэширование в определенных средах, принудительно ус

Spring Boot: поставщики кэша, Caffeine

Изображение
Caffeine - это переписанный на Java 8 кэш Guava, которая заменяет поддержку Guava. Если Caffeine присутствует, CaffeineCacheManager (предоставленный стартером spring-boot-starter-cache) автоматически конфигурируется. Кэши можно создать при запуске, установив свойство spring.cache.cache-names, и их можно настроить одним из следующих способов (в указанном порядке): Спецификация кэша, определенная в spring.cache.caffeine.spec Определен компонент com.github.benmanes.caffeine.cache.CaffeineSpec Определен bean-компонент com.github.benmanes.caffeine.cache.Caffeine Например, следующая конфигурация создает кэши cache1 и cache2 с максимальным размером 500 и временем жизни 10 минут spring.cache.cache-names=cache1,cache2 spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=600s Если определен bean-компонент com.github.benmanes.caffeine.cache.CacheLoader, он автоматически связывается с CaffeineCacheManager. Поскольку CacheLoader будет связан со всеми кэшами, управляемыми менедж

Spring Boot: поставщики кэша, Redis

Изображение
Если Redis доступен и настроен, RedisCacheManager настраивается автоматически. Можно создать дополнительные кэши при запуске, установив свойство spring.cache.cache-names, а настройки кэша по умолчанию можно настроить с помощью свойств spring.cache.redis.*. Например, следующая конфигурация создает кэши cache1 и cache2 со временем жизни 10 минут: spring.cache.cache-names=cache1,cache2 spring.cache.redis.time-to-live=600000 По умолчанию добавляется префикс ключа, поэтому, если два отдельных кэша используют один и тот же ключ, Redis не имеет перекрывающихся ключей и не может возвращать недопустимые значения. Настоятельно рекомендуется оставить этот параметр включенным, если вы создаете свой собственный RedisCacheManager. Вы можете получить полный контроль над конфигурацией по умолчанию, добавив свой RedisCacheConfiguration @Bean. Это может быть полезно, если вы ищете настройку стратегии сериализации по умолчанию. Если вам нужно больше контроля над конфигурацией, рассмотрите возмож

Spring Boot: поставщики кэша, Couchbase

Изображение
Если Java-клиент Couchbase и реализация couchbase-spring-cache доступны и Couchbase настроен, CouchbaseCacheManager настраивается автоматически. Также можно создать дополнительные кэши при запуске, установив свойство spring.cache.cache-names. Эти кэши работают на Bucket, который был автоматически настроен. Вы также можете создать дополнительные кэши в другом Bucket с помощью настройщика. Предположим, вам нужно два кэша (cache1 и cache2) в "main" («основном») Bucket и один (cache3) кэш с настраиваемым временем жизни 2 секунды в “another” («другом») Bucket. Вы можете создать первые два кэша с помощью конфигурации следующим образом: spring.cache.cache-names=cache1,cache2 Затем вы можете определить класс @Configuration для настройки дополнительного Bucket и кэша cache3 следующим образом: @Configuration(proxyBeanMethods = false) public class CouchbaseCacheConfiguration { private final Cluster cluster; public CouchbaseCacheConfiguration(Cluster cluster) {

Spring Boot: поставщики кэша, Generic, JCache, Infinispan

Изображение
Generic (Общий) Generic кэширование используется, если контекст определяет хотя бы один bean-компонент org.springframework.cache.Cache. Создается CacheManager, охватывающий все компоненты этого типа. JCache (JSR-107) JCache загружается при наличии javax.cache.spi.CachingProvider на пути к классам (то есть на пути к классам существует библиотека кэширования, совместимая с JSR-107), а JCacheCacheManager предоставляется spring-boot-starter-cache стартер. Доступны различные совместимые библиотеки, а Spring Boot обеспечивает управление зависимостями для Ehcache 3, Hazelcast и Infinispan. Любая другая совместимая библиотека также может быть добавлена. Может случиться так, что присутствует более одного поставщика, и в этом случае поставщик должен быть указан явно. Даже если стандарт JSR-107 не обеспечивает стандартизированный способ определения местоположения файла конфигурации, Spring Boot делает все возможное, чтобы приспособить кэш с подробностями реализации, как показано в следующем п

Spring Boot: поддерживаемые поставщики кэша

Изображение
Абстракция кэша не обеспечивает фактическое хранилище и использует абстракцию, материализованную интерфейсами org.springframework.cache.Cache и org.springframework.cache.CacheManager. Если вы не определили bean-компонент типа CacheManager или CacheResolver с именем cacheResolver, Spring Boot пытается обнаружить следующих поставщиков (в указанном порядке): Generic (Общий) JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, и другие) EhCache 2.x Hazelcast Infinispan Couchbase Redis Caffeine Simple (простой) Также возможно принудительно установить определенный поставщик кэша, установив свойство spring.cache.type. Используйте это свойство, если вам нужно полностью отключить кэширование в определенной среде (например, в тестах). Используйте spring-boot-starter-cache стартер для быстрого добавления основных зависимостей кэширования. Стартер приносит spring-context-support. Если вы добавляете зависимости вручную, вы должны включить поддержку spring-context-support, чтобы использ

Spring Boot: кэширование

Изображение
Spring Framework поддерживает прозрачное добавление кэширования в приложение. По своей сути абстракция применяет кэширование к методам, тем самым уменьшая количество выполнений на основе информации, доступной в кэше. Логика кэширования применяется прозрачно, без какого-либо вмешательства в вызывающего. Spring Boot автоматически конфигурирует инфраструктуру кэша, если поддержка кэширования включена с помощью аннотации @EnableCaching. В двух словах, добавить кэширование в работу вашего сервиса так же просто, как добавить соответствующую аннотацию к его методу, как показано в следующем примере: import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Component; @Component public class MathService { @Cacheable("piDecimals") public int computePiDecimal(int i) { // ... } } Этот пример демонстрирует использование кэширования в потенциально дорогостоящей операции. Перед вызовом computePiDecimal абстракция ищет в кэше

Spring Boot: работа с NoSQL, InfluxDB

Изображение
InfluxDB - это база данных временных рядов с открытым исходным кодом, оптимизированная для быстрого высокопроизводительного хранения и извлечения данных временных рядов в таких областях, как мониторинг операций, метрики приложений, данные датчиков Интернета вещей и аналитика в реальном времени. Подключение к InfluxDB Spring Boot автоматически настраивает экземпляр InfluxDB при условии, что клиент influenxdb-java находится в пути к классам, и задан URL-адрес базы данных, как показано в следующем примере: spring.influx.url=https://172.0.0.1:8086 Если для подключения к InfluxDB требуются имя пользователя и пароль, вы можете соответствующим образом установить свойства spring.influx.user и spring.influx.password. InfluxDB опирается на OkHttp. Если вам нужно настроить http-клиент, который InfluxDB использует за кулисами, вы можете зарегистрировать bean-компонент InfluxDbOkHttpClientBuilderProvider. Читайте также: Spring Boot: работа с NoSQL технологиями, Redis Spring Boot: ра

Spring Boot: работа с NoSQL, встроенный LDAP-сервер в памяти

Изображение
В целях тестирования Spring Boot поддерживает автоматическую настройку LDAP-сервера в памяти из UnboundID. Чтобы настроить сервер, добавьте зависимость в com.unboundid:unboundid-ldapsdk и объявите свойство spring.ldap.embedded.base-dn следующим образом: spring.ldap.embedded.base-dn=dc=spring,dc=io Можно определить несколько значений base-dn, однако, поскольку различающиеся имена обычно содержат запятые, они должны быть определены с использованием правильных обозначений. В файлах yaml вы можете использовать нотацию списка yaml: spring.ldap.embedded.base-dn: - dc=spring,dc=io - dc=pivotal,dc=io В файлах свойств вы должны включить индекс как часть имени свойства: spring.ldap.embedded.base-dn[0]=dc=spring,dc=io spring.ldap.embedded.base-dn[1]=dc=pivotal,dc=io По умолчанию сервер запускается с произвольного порта и запускает обычную поддержку LDAP. Нет необходимости указывать свойство spring.ldap.urls. Если в вашем classpath есть файл schema.ldif, он используется

Spring Boot: работа с NoSQL, LDAP

Изображение
LDAP (Lightweight Directory Access Protocol, облегченный протокол доступа к каталогам) - это открытый, независимый от производителя, стандартный протокол приложений для доступа и обслуживания распределенных информационных служб каталогов по IP-сети. Spring Boot предлагает автоматическую настройку для любого совместимого сервера LDAP, а также поддержку встроенного сервера LDAP в памяти из UnboundID. Абстракции LDAP предоставляются Spring Data LDAP. Существует spring-boot-starter-data-ldap стартер для удобного сбора зависимостей. Подключение к серверу LDAP Чтобы подключиться к серверу LDAP, убедитесь, что вы объявили зависимость от стартера spring-boot-starter-data-ldap или spring-ldap-core, а затем объявили URL-адреса вашего сервера в файле application.properties, как показано в следующий пример: spring.ldap.urls=ldap://myserver:1235 spring.ldap.username=admin spring.ldap.password=secret Если вам нужно настроить параметры подключения, вы можете использовать свойства spring.ld

Spring Boot: работа с NoSQL, Spring Data Couchbase репозитории

Изображение
Spring Data включает поддержку репозиториев для Couchbase. Вы можете внедрить автоматически сконфигурированный экземпляр CouchbaseTemplate, как если бы вы использовали любой другой Spring Bean, при условии, что доступен CouchbaseConfigurer по умолчанию (что происходит, когда вы включаете поддержку Couchbase). В следующих примерах показано, как внедрить bean-компонент Couchbase: @Component public class MyBean { private final CouchbaseTemplate template; @Autowired public MyBean(CouchbaseTemplate template) { this.template = template; } // ... } Есть несколько bean-компонентов, которые вы можете определить в своей собственной конфигурации, чтобы переопределить те, которые предусмотрены автоматической конфигурацией: CouchbaseTemplate @Bean с именем couchbaseTemplate. IndexManager @Bean с именем couchbaseIndexManager. CustomConversions @Bean с именем couchbaseCustomConversions. Чтобы избежать жесткого кодирования этих имен в вашей собственной ко

Spring Boot: работа с NoSQL, Couchbase

Изображение
Couchbase - это распределенная многомодельная NoSQL база данных с открытым исходным кодом, оптимизированная для интерактивных приложений. Spring Boot предлагает автоконфигурацию для Couchbase и абстракции поверх него, предоставляемые Spring Data Couchbase. Для удобного сбора зависимостей существуют стартеры spring-boot-starter-data-couchbase и spring-boot-starter-data-couchbase-reactive. Подключение к Couchbase Вы можете получить Bucket и Cluster, добавив Couchbase SDK и некоторую конфигурацию. Свойства spring.couchbase.* можно использовать для настройки соединения. Обычно вы предоставляете хосты начальной загрузки, имя сегмента и пароль, как показано в следующем примере: spring.couchbase.bootstrap-hosts=my-host-1,192.168.1.123 spring.couchbase.bucket.name=my-bucket spring.couchbase.bucket.password=secret Вы должны предоставить хотя бы хост(хосты) первоначальной загрузки (bootstrap host(s)), в этом случае имя сегмента (bucket name) default, а пароль - пустая строка. Кроме тог

Spring Boot: работа с NoSQL, Cassandra

Изображение
Cassandra - это распределенная система управления базами данных с открытым исходным кодом, предназначенная для обработки больших объемов данных на многих обычных серверах. Spring Boot предлагает автоконфигурацию для Cassandra и абстракции, предоставляемые Spring Data Cassandra. Существует spring-boot-starter-data-cassandra стартер для удобного сбора зависимостей. Подключение к Cassandra Вы можете внедрить автоматически сконфигурированный CassandraTemplate или экземпляр Cassandra Session так же, как и любой другой Spring Bean. Свойства spring.data.cassandra.* могут быть использованы для настройки соединения. Обычно вы предоставляете свойства keyspace-name и contact-points, как показано в следующем примере: spring.data.cassandra.keyspace-name=mykeyspace spring.data.cassandra.contact-points=cassandrahost1,cassandrahost2 Вы также можете зарегистрировать произвольное количество bean-компонентов, которые реализуют ClusterBuilderCustomizer для более сложных настроек. В следующем ли

Spring Boot: работа с NoSQL, Spring Data Elasticsearch

Изображение
Подключение к Elasticsearch с помощью Spring Data Для подключения к Elasticsearch должен быть определен bean-компонент RestHighLevelClient, автоматически настроенный Spring Boot или предоставленный приложением вручную. С этой конфигурацией ElasticsearchRestTemplate может быть внедрен как любой другой Spring bean-компонент, как показано в следующем примере: @Component public class MyBean { private final ElasticsearchRestTemplate template; public MyBean(ElasticsearchRestTemplate template) { this.template = template; } // ... } При наличии spring-data-elasticsearch и необходимых зависимостей для использования WebClient (обычно spring-boot-starter-webflux) Spring Boot также может автоматически настраивать ReactiveElasticsearchClient и ReactiveElasticsearchTemplate в качестве bean-компонентов. Они являются реактивным эквивалентом других клиентов REST. Spring Data Elasticsearch репозитории Spring Data включает поддержку репозиториев для Elasticsearch. Ка

Spring Boot: работа с NoSQL, подключение к Elasticsearch

Изображение
Подключение к Elasticsearch с использованием Reactive REST клиентов Spring Data Elasticsearch поставляет ReactiveElasticsearchClient для запросов экземпляров Elasticsearch в реактивном режиме. Он построен поверх WebClient WebFlux, поэтому для включения этой поддержки полезно использовать зависимости spring-boot-starter-elasticsearch и spring-boot-starter-webflux. По умолчанию Spring Boot автоматически настраивает и регистрирует компонент ReactiveElasticsearchClient, который нацелен на localhost:9200. Вы можете дополнительно настроить его настройку, как показано в следующем примере: spring.data.elasticsearch.client.reactive.endpoints=search.example.com:9200 spring.data.elasticsearch.client.reactive.use-ssl=true spring.data.elasticsearch.client.reactive.socket-timeout=10s spring.data.elasticsearch.client.reactive.username=user spring.data.elasticsearch.client.reactive.password=secret Если свойств конфигурации недостаточно, и вы хотите полностью контролировать конфигурацию клиент

Spring Boot: работа с NoSQL, Elasticsearch

Изображение
Elasticsearch - это распределенная поисковая и аналитическая RESTful система с открытым исходным кодом. Spring Boot предлагает базовую авто-конфигурацию для Elasticsearch. Spring Boot поддерживает несколько клиентов: Официальные Java высокоуровневые и низкоуровневые REST клиенты ReactiveElasticsearchClient, предоставленный Spring Data Elasticsearch Транспортный клиент все еще доступен, но его поддержка устарела в Spring Data Elasticsearch и самом Elasticsearch. Он будет удален в будущем релизе. Spring Boot предоставляет специальный стартер, spring-boot-starter-data-elasticsearch. Клиент Jest также устарел, так как Elasticsearch и Spring Data Elasticsearch предоставляют официальную поддержку клиентам REST. Подключение к Elasticsearch с использованием REST клиентов Elasticsearch поставляет два разных REST клиента, которые можно использовать для запроса кластера: низкоуровневый клиент и высокоуровневый клиент. Если у вас есть зависимость org.elasticsearch.client:elasticsearch-r

Spring Boot: работа с NoSQL, Solr

Изображение
Apache Solr - это поисковая система. Spring Boot предлагает базовую автоконфигурацию для клиентской библиотеки Solr 5 и надстроек, предоставляемых Spring Data Solr. Существует spring-boot-starter-data-solr стартер для удобного сбора зависимостей. Подключение к Solr Вы можете внедрить автоматически настроенный экземпляр SolrClient, как и любой другой компонент Spring. По умолчанию экземпляр пытается подключиться к серверу по адресу localhost:8983/solr. В следующем примере показано, как внедрить bean-компонент Solr: @Component public class MyBean { private SolrClient solr; @Autowired public MyBean(SolrClient solr) { this.solr = solr; } // ... } Если вы добавите свой собственный @Bean типа SolrClient, он заменит значение по умолчанию. Spring Data Solr репозитории Spring Data включает поддержку репозитория для Apache Solr. Как и в случае с репозиториями JPA, рассмотренными ранее, основной принцип заключается в том, что запросы автоматически созда

Spring Boot: работа с NoSQL, Neo4j, Spring Data Neo4j репозитории

Изображение
Использование нативных типов Neo4j-OGM может отображать некоторые типы, такие как типы в java.time.*, на свойства на основе строк или на один из собственных типов, предоставляемых Neo4j. По причинам обратной совместимости по умолчанию для Neo4j-OGM используется представление на основе строк. Чтобы использовать собственные типы, добавьте зависимость либо org.neo4j:neo4j-ogm-bolt-native-types, либо org.neo4j:neo4j-ogm-embedded-native-types и настройте spring.data.neo4j.use-native-types свойство, как показано в следующем примере: spring.data.neo4j.use-native-types=true Neo4jSession По умолчанию, если вы запускаете веб-приложение, сессия привязывается к потоку для всей обработки запроса (то есть он использует шаблон "Open Session in View"). Если вам не нужно это поведение, добавьте следующую строку в файл application.properties: spring.data.neo4j.open-in-view=false Spring Data Neo4j репозитории Spring Data включает поддержку репозитория для Neo4j. Spring Data Ne

Spring Boot: работа с NoSQL, Neo4j, использование встроенного режима

Изображение
Если вы добавите org.neo4j:neo4j-ogm-embedded-driver к зависимостям вашего приложения, Spring Boot автоматически настроит встроенный экземпляр Neo4j, находящийся в процессе, который не сохраняет никаких данных при завершении работы вашего приложения. Поскольку встроенный драйвер Neo4j OGM не обеспечивает само ядро Neo4j, вы должны объявить org.neo4j:neo4j как зависимость самостоятельно. Встроенный драйвер имеет приоритет над другими драйверами, когда в пути к классам есть несколько драйверов. Вы можете явно отключить встроенный режим, установив spring.data.neo4j.embedded.enabled=false. Data Neo4j Tests автоматически используют встроенный экземпляр Neo4j, если встроенный драйвер и ядро Neo4j находятся в пути к классам, как описано выше. Вы можете включить постоянство для встроенного режима, указав путь к файлу базы данных в вашей конфигурации, например, spring.data.neo4j.uri=file://var/tmp/graph.db. Читайте также: Spring Boot: работа с NoSQL технологиями, Redis Spring Boot: раб

Spring Boot: работа с NoSQL, Neo4j

Изображение
Neo4j - это NoSQL графовая база данных, с открытым исходным кодом, которая использует богатую модель данных узлов, связанных первоклассными отношениями, которая лучше подходит для связанных больших данных, чем традиционные подходы к СУБД. Spring Boot предлагает несколько удобств для работы с Neo4j, включая spring-boot-starter-data-neo4j стартер. Подключение к базе данных Neo4j Чтобы получить доступ к серверу Neo4j, вы можете добавить автоматически настроенный org.neo4j.ogm.session.Session. По умолчанию экземпляр пытается подключиться к серверу Neo4j по адресу localhost:7687, используя протокол Bolt. В следующем примере показано, как внедрить сеанс Neo4j: @Component public class MyBean { private final Session session; @Autowired public MyBean(Session session) { this.session = session; } // ... } Вы можете настроить URI и учетные данные для использования, установив свойства spring.data.neo4j.*, как показано в следующем примере: spring.data.neo