32. NoSQL 기술로 작업하기 by ks

Spring Data는 MongoDB, Neo4J, Elasticsearch, Solr, Redis, Gemfire, Cassandra, Couchbase 및 LDAP 등 다양한 NoSQL 기술에 액세스하는 데 도움이되는 추가 프로젝트를 제공합니다. Spring Boot는 Redis, MongoDB, Neo4j, Elasticsearch, Solr Cassandra, Couchbase 및 LDAP에 대한 자동 구성을 제공합니다. 다른 프로젝트를 사용할 수는 있지만 직접 구성해야합니다. projects.spring.io/spring-data.에서 해당 참조 문서를 참조하십시오.

32.1 Redis

Redis : Remote Dictionary Server. 키-값 구조의 비정형 데이터를 저장하고 관리하는 오픈소스 비관계형 데이터베이스 관리 시스템

Redis는 캐시, 메시지 브로커 및 풍부한 기능의 키 - 값 (key-value)저장소입니다. Spring Boot는 Lettuce 및 Jedis 클라이언트 라이브러리의 기본 자동 구성과 Spring Data Redis가 제공하는 추상화를 제공합니다.

Java의 Redis client : Jedis, Lettuce. 자바에서 Redis를 쉽게 사용할 수 있게 해주는 라이브러리

의존성을 편리한 방식으로 수집하기 위해 spring-boot-startter-data-redis "Starter"가 있습니다. 기본적으로 Lettuce를 사용합니다. 이 스타터는 기존 애플리케이션과 반응 애플리케이션 모두를 처리합니다.

우리는 또한 반응 지원이있는 다른 상점과의 일관성을 위해 spring-boot-starter-data-redis-reactive "스타터"를 제공합니다.

32.1.1 Redis 연결

다른 Spring Bean처럼 자동 구성된 RedisConnectionFactory, StringRedisTemplate 또는 Vanilla RedisTemplate 인스턴스를 삽입 할 수 있습니다. 기본적으로 인스턴스는 localhost : 6379의 Redis 서버에 연결을 시도합니다. 다음 목록은 그러한 bean의 예를 보여줍니다.

@Component
public class MyBean {

	private StringRedisTemplate template;

	@Autowired
	public MyBean(StringRedisTemplate template) {
		this.template = template;
	}

	// ...

}

고급 사용자 정의를 위해 LettuceClientConfigurationBuilderCustomizer를 구현하는 임의의 수의 Bean을 등록 할 수도 있습니다. Jedis를 사용하는 경우 JedisClientConfigurationBuilderCustomizer도 사용할 수 있습니다.

자동 구성된 유형의 @Bean을 직접 추가하면 기본 (RedisTemplate의 경우를 제외하고 해당 유형이 아닌 redisTemplate이라는 bean 이름을 기반으로 하는 것은 제외한다. (RedisTemplate이 아니면서 RedisTemplate으로 빈이름을 설정한 경우는 뺀다는 의미인듯??))이 대체됩니다. 기본적으로 commons-pool2가 클래스 경로에 있으면 풀링 된 연결 팩토리가 생성됩니다.

32.2 MongoDB

MongoDB는 전통적인 테이블 기반 관계형 데이터 대신 JSON 형 스키마를 사용하는 오픈 소스 NoSQL 문서 데이터베이스입니다. Spring Boot는 Spring-boot-startter-data-mongodb 및 spring-boot-startter-data-mongodb-reactive "Starters"를 포함하여 MongoDB와 함께 작업 할 때 여러 가지 편의를 제공합니다.

32.2.1 MongoDB 데이터베이스에 연결

Mongo 데이터베이스에 액세스하려면 자동 구성된 org.springframework.data.mongodb.MongoDbFactory를 삽입 할 수 있습니다. 기본적으로 인스턴스는 mongodb : // localhost / test의 MongoDB 서버에 연결을 시도합니다. 다음 예는 MongoDB 데이터베이스에 연결하는 방법을 보여줍니다.

import org.springframework.data.mongodb.MongoDbFactory;
import com.mongodb.DB;

@Component
public class MyBean {

	private final MongoDbFactory mongo;

	@Autowired
	public MyBean(MongoDbFactory mongo) {
		this.mongo = mongo;
	}

	// ...

	public void example() {
		DB db = mongo.getDb();
		// ...
	}

}

다음 예제와 같이 spring.data.mongodb.uri 속성을 설정하여 URL을 변경하고 복제 세트와 같은 추가 설정을 구성 할 수 있습니다.

spring.data.mongodb.uri=mongodb://user:secret@mongo1.example.com:12345,mongo2.example.com:23456/test

또는 Mongo 2.x를 사용하는 한 호스트 / 포트를 지정할 수 있습니다. 예를 들어, application.properties에 다음 설정을 선언 할 수 있습니다.

spring.data.mongodb.host=mongoserver
spring.data.mongodb.port=27017

자신의 MongoClient를 정의한 경우, 해당 MongoDbFactory를 자동 구성하는 데 사용됩니다. com.mongodb.MongoClient 및 com.mongodb.client.MongoClient가 모두 지원됩니다.

Mongo 3.0 Java 드라이버를 사용하는 경우 spring.data.mongodb.host 및 spring.data.mongodb.port는 지원되지 않습니다. 이 경우 모든 구성을 제공하려면 spring.data.mongodb.uri를 사용해야합니다.

그냥 Mongo 라이브러리를 용하면 application.properties는 지원하지 않고, spring mongodb를 사용해야 쓸 수 있다!는 이야기

spring.data.mongodb.port가 지정되지 않으면 기본값 27017이 사용됩니다. 이전에 표시된 예제에서이 줄을 삭제할 수 있습니다.

Spring Data Mongo를 사용하지 않으면 MongoDbFactory를 사용하는 대신 com.mongodb.MongoClient 빈을 주입 할 수 있습니다. MongoDB 연결 설정을 완벽하게 제어하려면 자신의 MongoDbFactory 또는 MongoClient 빈을 선언 할 수 있습니다.

리 액티브 드라이버를 사용하는 경우 SSL에 Netty가 필요합니다. Netty를 사용할 수 있고 사용할 팩토리가 이미 사용자 정의되지 않은 경우 자동 구성은 이 팩토리를 자동으로 구성합니다.

32.2.2 MongoTemplate

Spring 데이터 MongoDB는 Spring JdbcTemplate과 디자인면에서 매우 유사한 MongoTemplate 클래스를 제공합니다. JdbcTemplate과 마찬가지로, Spring Boot는 다음과 같이 템플릿을 삽입 할 수 있도록 bean을 자동으로 구성합니다.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final MongoTemplate mongoTemplate;

	@Autowired
	public MyBean(MongoTemplate mongoTemplate) {
		this.mongoTemplate = mongoTemplate;
	}

	// ...

}

자세한 내용은 MongoOperations Javadoc을 참조하십시오.

32.2.3 Spring Data MongoDB Repository

Spring 데이터는 MongoDB에 대한 저장소 지원을 포함합니다. 앞에서 설명한 JPA 저장소와 마찬가지로 기본 원칙은 메소드 이름을 기반으로 쿼리가 자동으로 생성된다는 것입니다.

사실, Spring Data JPA와 Spring Data MongoDB는 동일한 공통 인프라를 공유합니다. 이전에 JPA 예제를 사용할 수 있었고 City가 JPA @Entity가 아닌 Mongo 데이터 클래스라고 가정하면 다음 예제와 같이 동일한 방식으로 작동합니다.

package com.example.myapp.domain;

import org.springframework.data.domain.*;
import org.springframework.data.repository.*;

public interface CityRepository extends Repository<City, Long> {

	Page<City> findAll(Pageable pageable);

	City findByNameAndStateAllIgnoringCase(String name, String state);

}

@EntityScan 주석을 사용하여 문서 스캔 위치를 사용자 정의 할 수 있습니다.

풍부한 객체 매핑 기술을 포함하여 Spring 데이터 MongoDB에 대한 자세한 내용은 참조 문서를 참조하십시오.

32.2.4 임베디드 몽고

Spring Boot는 Embedded Mongo의 자동 구성을 제공합니다. Spring Boot 애플리케이션에서 사용하려면 de.flapdoodle.embed : de.flapdoodle.embed.mongo에 의존성을 추가하십시오.

Mongo가 수신하는 포트는 spring.data.mongodb.port 속성을 설정하여 구성 할 수 있습니다. 무작위로 할당 된 빈 포트를 사용하려면 0 값을 사용하십시오. MongoAutoConfiguration에 의해 생성 된 MongoClient는 무작위로 할당 된 포트를 사용하도록 자동으로 구성됩니다.

사용자 정의 포트를 구성하지 않으면 기본적으로 포함 된 지원에서 임의의 포트 (27017이 아닌)를 사용합니다.

classpath에 SLF4J가 있다면, Mongo가 생성 한 결과는 자동으로 org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongo라는 로거로 라우트됩니다.

자신의 IMongodConfig와 IRuntimeConfig 빈을 선언하여 Mongo 인스턴스의 구성과 로깅 라우팅을 제어 할 수 있습니다.

32.3 Neo4j

Neo4j는 일류 관계(first class relationships)로 연결된 노드의 풍부한 데이터 모델을 사용하는 오픈 소스 NoSQL 그래프 데이터베이스로, 기존의 RDBMS 방식보다 연결된 큰 데이터에 더 적합합니다. Spring Boot는 spring-boot-starter-data-neo4j "Starter"를 포함하여 Neo4j를 사용하기위한 몇 가지 편의를 제공합니다.

그래프 데이터베이스 : 컴퓨팅에서 그래프 데이터베이스(graph database, GDB)는 시맨틱 쿼리를 위해 노드, 엣지, 프로퍼티와 함께그래프 구조를 사용하여 데이터를 표현하고 저장하는 데이터베이스이다.

참조 : 위키

32.3.1 Neo4j 데이터베이스에 연결

Neo4j 서버에 액세스하려면 자동 구성된 org.neo4j.ogm.session.Session을 삽입 할 수 있습니다. 기본적으로 인스턴스는 Bolt 프로토콜을 사용하여 localhost : 7687에있는 Neo4j 서버에 연결을 시도합니다. 다음 예는 Neo4j 세션을 삽입하는 방법을 보여줍니다.

Bolt 프로토콜 : 연결 지향 네트워크 프로토콜에 사용되는 클라이언트-서버의 통신 데이터베이스 응용 프로그램. TCP/Web socket을 통해 작동한다. Neo4j 그래프 데이터베이스용으로 개발되었음.

@Component
public class MyBean {

	private final Session session;

	@Autowired
	public MyBean(Session session) {
		this.session = session;
	}

	// ...

}

다음 예와 같이 spring.data.neo4j. * 속성을 설정하여 사용할 uri 및 자격 증명을 구성 할 수 있습니다.

spring.data.neo4j.uri=bolt://my-server:7687
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=secret

org.neo4j.ogm.config.Configuration @Bean을 추가하여 세션 생성을 완전히 제어 할 수 있습니다. 또한 SessionFactory 유형의 @Bean을 추가하면 자동 구성이 비활성화되고 모든 제어 권한이 부여됩니다.

32.3.2 임베디드 모드 사용하기

org.neo4j : neo4j-ogm-embedded-driver를 응용 프로그램의 종속성에 추가하면 Spring 부트는 응용 프로그램이 종료 될 때 데이터를 유지하지 않는 Neo4j의 실행중인 내장 인스턴스를 자동으로 구성합니다. (끄면 없어진다는 의미인듯 )

임베디드 Neo4j OGM 드라이버는 Neo4j 커널 자체를 제공하지 않으므로 org.neo4j : neo4j를 스스로 종속성으로 선언해야합니다. 호환되는 버전 목록은 Neo4j OGM 문서를 참조하십시오.

클래스 경로에 드라이버가 여러 개인 경우 내장 드라이버가 다른 드라이버보다 우선합니다. spring.data.neo4j.embedded.enabled = false를 설정하여 내장 모드를 명시 적으로 비활성화 할 수 있습니다.

Data Neo4j 테스트는 임베디드 드라이버와 Neo4j 커널이 위에서 설명한대로 클래스 경로에 있으면 내장 된 Neo4j 인스턴스를 자동으로 사용합니다.

구성에 데이터베이스 파일 경로를 제공하여 내장 모드에 대한 지속성을 활성화 할 수 있습니다. spring.data.neo4j.uri = file : //var/tmp/graph.db.

32.3.3 Neo4jSession

기본적으로 웹 응용 프로그램을 실행하는 경우 세션은 요청 처리 전체에 대한 스레드에 바인딩됩니다 (즉, "보기에서 세션 열기"패턴 사용). 이 동작을 원하지 않으면 application.properties 파일에 다음 행을 추가하십시오.

spring.data.neo4j.open-in-view=false

32.3.4 Spring Data Neo4j Repositories

Spring 데이터는 Neo4j에 대한 저장소 지원을 포함합니다.

Spring Data Neo4j는 다른 많은 Spring Data 모듈처럼 Spring Data JPA와 공통 인프라를 공유합니다. 이전 예제에서 JPA 예제를 가져 와서 City를 다음과 같이 JPA @Entity가 아닌 Neo4j OGM @NodeEntity로 정의하면 저장소 추상화가 다음과 같이 작동합니다.

package com.example.myapp.domain;

import java.util.Optional;

import org.springframework.data.neo4j.repository.*;

public interface CityRepository extends Neo4jRepository<City, Long> {

	Optional<City> findOneByNameAndState(String name, String state);

}

spring-boot-starter-data-neo4j "Starter"는 저장소 관리는 물론 트랜잭션 관리를 가능하게합니다. @ Configuration-bean에서 @ EnableNeo4jRepositories 및 @EntityScan을 각각 사용하여 저장소 및 엔티티를 찾기 위해 위치를 사용자 정의 할 수 있습니다.

객체 맵핑 기술을 포함한 Spring Data Neo4j에 대한 자세한 내용은 참조 문서를 참조하십시오.

32.4 Gemfire

Spring Data Gemfire는 Pivotal Gemfire 데이터 관리 플랫폼에 액세스하기위한 편리한 Spring 친화적 도구를 제공합니다. 의존성을 편리한 방식으로 수집하기위한 spring-boot-starter-data-gemfire "스타터"가 있습니다. 현재 Gemfire에 대한 자동 구성 지원은 없지만 단일 주석 인 @EnableGemfireRepositories를 사용하여 Spring 데이터 저장소를 활성화 할 수 있습니다.

젬파이어 : 동적 확장성, 고성능 및 데이터베이스와 같은 지속성을 제공하는 분산 데이터 관리 플랫폼

32.5 Solr

Apache Solr는 검색 엔진입니다. Spring Boot는 Solr 5 클라이언트 라이브러리의 기본 자동 구성과 Spring Data Solr이 제공하는 추상화를 제공합니다. 의존성을 편리한 방식으로 수집하기위한 spring-boot-starter-data-solr "스타터"가 있습니다.

32.5.1 Solr 연결

다른 Spring 빈처럼 자동 구성된 SolrClient 인스턴스를 삽입 할 수 있습니다. 기본적으로 인스턴스는 localhost : 8983 / solr에있는 서버에 연결을 시도합니다. 다음 예제에서는 Solr bean을 주입하는 방법을 보여줍니다.

@Component
public class MyBean {

	private SolrClient solr;

	@Autowired
	public MyBean(SolrClient solr) {
		this.solr = solr;
	}

	// ...

}

SolrClient 형의 자신의 @Bean을 추가하면, 디폴트의 값을 옮겨 놓습니다.

32.5.2 Spring Data Solr Repositories

Spring 데이터에는 Apache Solr에 대한 저장소 지원이 포함됩니다. 앞에서 설명한 JPA 저장소와 마찬가지로 기본 원칙은 메서드 이름을 기반으로 쿼리가 자동으로 생성된다는 것입니다.

실제로 Spring Data JPA와 Spring Data Solr은 동일한 공통 인프라를 공유합니다. 이전에 JPA 예제를 사용할 수 있었고 City가 JPA @Entity가 아닌 @SolrDocument 클래스라고 가정하면 같은 방식으로 작동합니다.

Spring Data Solr에 대한 자세한 내용은 참조 문서를 참조하십시오.

32.6 Elasticsearch

Elasticsearch는 오픈 소스, 분산, RESTful 검색 및 분석 엔진입니다. Spring Boot는 Elasticsearch의 기본 자동 구성을 제공합니다.

Spring Boot는 여러 HTTP 클라이언트를 지원합니다 :

공식 자바 "로우 레벨"및 "하이 레벨"REST 클라이언트 농담 전송 클라이언트는 여전히 Spring Data Elasticsearch에서 사용하고 있습니다.이 클라이언트는 spring-boot-startter-data-elasticsearch "Starter"를 사용하여 시작할 수 있습니다.

32.6.1 REST 클라이언트로 Elasticsearch 에 연결

Elasticsearch는 "Low Level"클라이언트와 "High Level"클라이언트 인 클러스터를 쿼리하는 데 사용할 수있는 두 가지 REST 클라이언트를 제공합니다.

클래스 패스에 org.elasticsearch.client : elasticsearch-rest-client 의존성이 있다면 Spring Boot는 기본적으로 localhost : 9200을 대상으로하는 RestClient 빈을 자동 구성하고 등록합니다. 다음 예제와 같이 RestClient 구성 방법을 조정할 수 있습니다.

spring.elasticsearch.rest.uris=https://search.example.com:9200
spring.elasticsearch.rest.username=user
spring.elasticsearch.rest.password=secret

보다 고급 사용자 정의를 위해 RestClientBuilderCustomizer를 구현하는 임의의 수의 Bean을 등록 할 수도 있습니다. 등록을 완전히 제어하려면 RestClient bean을 정의하십시오.

클래스 패스에 org.elasticsearch.client : elasticsearch-rest-high-level-client 의존성이 있다면, Spring 부트는 RestHighLevelClient를 자동 설정합니다. RestHighLevelClient는 기존의 RestClient 빈을 랩핑하고 HTTP 설정을 재사용합니다.

32.6.2 Jest를 사용해서 Elasticsearch 에 연결

classpath에 Jest가있는 경우 기본적으로 localhost : 9200을 대상으로 자동 구성된 JestClient를 삽입 할 수 있습니다. 다음 예제와 같이 클라이언트 구성 방법을 더 조정할 수 있습니다.

spring.elasticsearch.jest.uris=https://search.example.com:9200
spring.elasticsearch.jest.read-timeout=10000
spring.elasticsearch.jest.username=user
spring.elasticsearch.jest.password=secret

고급 사용자 정의를 위해 HttpClientConfigBuilderCustomizer를 구현하는 임의의 수의 Bean을 등록 할 수도 있습니다. 다음 예제에서는 추가 HTTP 설정을 조정합니다.

static class HttpSettingsCustomizer implements HttpClientConfigBuilderCustomizer {

	@Override
	public void customize(HttpClientConfig.Builder builder) {
		builder.maxTotalConnection(100).defaultMaxTotalConnectionPerRoute(5);
	}

}

등록을 완전히 제어하려면 JestClient bean을 정의하십시오.

32.6.3 Spring Data 로 Elasticsearch에 연결

Elasticsearch에 연결하려면 하나 이상의 클러스터 노드의 주소를 제공해야합니다. 주소는 spring.data.elasticsearch.cluster-nodes 등록 정보를 쉼표로 구분 된 host : port 목록으로 설정하여 지정할 수 있습니다. 이 구성을 사용하면 다음 예제와 같이 ElasticsearchTemplate 또는 TransportClient를 다른 Spring bean처럼 주입 할 수있다.

spring.data.elasticsearch.cluster-nodes=localhost:9300
@Component
public class MyBean {

	private final ElasticsearchTemplate template;

	public MyBean(ElasticsearchTemplate template) {
		this.template = template;
	}

	// ...

}

자신의 ElasticsearchTemplate 또는 TransportClient @ Bean을 추가하면 기본값으로 바뀝니다.

32.6.4 Spring Data Elasticsearch Repositories

Spring 데이터는 Elasticsearch에 대한 저장소 지원을 포함합니다. 앞에서 설명한 JPA 저장소와 마찬가지로 기본적으로 메소드 이름을 기반으로 쿼리가 자동으로 생성됩니다.

사실, Spring Data JPA와 Spring Data Elasticsearch는 동일한 공통 인프라를 공유합니다. 이전에 JPA 예제를 사용할 수 있었고 City가 JPA @Entity가 아닌 Elasticsearch @Document 클래스라고 가정하면 같은 방식으로 작동합니다.

Spring Data Elasticsearch에 대한 자세한 내용은 참조 문서를 참조하십시오.

32.7 카산드라

카산드라는 많은 상용 서버에서 대량의 데이터를 처리하도록 설계된 개방형 소스 분산 데이터베이스 관리 시스템입니다. Spring Boot는 Cassandra의 자동 구성과 Spring Data Cassandra가 제공하는 추상화를 제공합니다. 의존성을 편리한 방식으로 수집하기위한 spring-boot-startter-data-cassandra "Starter"가 있습니다.

32.7.1 카산드라에 연결

다른 Spring Bean과 마찬가지로 자동 구성된 CassandraTemplate 또는 Cassandra Session 인스턴스를 삽입 할 수 있습니다. spring.data.cassandra. * 속성을 사용하여 연결을 사용자 정의 할 수 있습니다. 일반적으로 다음 예와 같이 keyspace-name 및 contact-points 등록 정보를 제공합니다.

spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1,cassandrahost2

고급 사용자 정의를 위해 ClusterBuilderCustomizer를 구현하는 임의의 수의 Bean을 등록 할 수도 있습니다.

다음 코드 목록은 Cassandra bean을 주입하는 방법을 보여줍니다.

@Component
public class MyBean {

	private CassandraTemplate template;

	@Autowired
	public MyBean(CassandraTemplate template) {
		this.template = template;
	}

	// ...

}

CassandraTemplate 유형의 @Bean을 직접 추가하면 기본값으로 바뀝니다.

32.7.2 Spring Data Cassandra Repositories

Spring Data는 Cassandra에 대한 기본 저장소 지원을 포함합니다. 현재이 방법은 앞에서 설명한 JPA 리포지토리보다 더 제한적이며 @Query로 찾기 메서드에 주석을 추가해야합니다.

Spring Data Cassandra에 대한 자세한 내용은 참조 문서를 참조하십시오.

32.8 Couchbase

Couchbase는 대화식 애플리케이션에 최적화 된 오픈 소스, 분산, 다중 모델 NoSQL 문서 지향 데이터베이스입니다. Spring Boot는 Couchbase의 자동 구성과 Spring Data Couchbase이 제공하는 추상화를 제공합니다. 의존성을 편리한 방식으로 수집하기 위해 spring-boot-startter-data-couchbase 및 spring-boot-startter-data-couchbase-reactive "Starters"가 있습니다.

32.8.1 Couchbase에 연결

Couchbase SDK 및 일부 구성을 추가하여 Bucket 및 Cluster를 얻을 수 있습니다. spring.couchbase. * 속성을 사용하여 연결을 사용자 정의 할 수 있습니다. 일반적으로 다음 예와 같이 부트 스트랩 호스트, 버킷 이름 및 암호를 제공합니다.

spring.couchbase.bootstrap-hosts=my-host-1,192.168.1.123
spring.couchbase.bucket.name=my-bucket
spring.couchbase.bucket.password=secret

적어도 부트 스트랩 호스트를 제공해야합니다.이 경우 버킷 이름은 default이고 암호는 빈 문자열입니다. 또는 org.springframework.data.couchbase.config.CouchbaseConfigurer @Bean을 정의하여 전체 구성을 제어 할 수 있습니다.

또한 CouchbaseEnvironment 설정 중 일부를 사용자 정의 할 수도 있습니다. 예를 들어, 다음 구성은 새 버킷을 여는 데 사용할 시간 초과를 변경하고 SSL 지원을 활성화합니다.

spring.couchbase.env.timeouts.connect=3000
spring.couchbase.env.ssl.key-store=/location/of/keystore.jks
spring.couchbase.env.ssl.key-store-password=secret

자세한 내용은 spring.couchbase.env. * 속성을 확인하십시오.

32.8.2 Spring Data Couchbase Repositories

Spring 데이터는 Couchbase에 대한 저장소 지원을 포함한다. Spring Data Couchbase에 대한 자세한 내용은 참조 문서를 참조하십시오.

기본 CouchbaseConfigurer를 사용할 수 있다면 다른 Spring Bean과 마찬가지로 자동 구성된 CouchbaseTemplate 인스턴스를 삽입 할 수 있습니다 (앞서 설명한 것처럼 Couchbase 지원을 사용할 때 발생 함).

다음 예제는 Couchbase bean을 주입하는 방법을 보여줍니다.

@Component
public class MyBean {

	private final CouchbaseTemplate template;

	@Autowired
	public MyBean(CouchbaseTemplate template) {
		this.template = template;
	}

	// ...

}

자동 구성에 의해 제공되는 것을 재정의하기 위해 자신의 구성에서 정의 할 수있는 몇 가지 bean이 있습니다.

  1. couchbaseTemplate이라는 이름을 가진 CouchbaseTemplate @Bean.

  2. 이름이 couchbaseIndexManager 인 IndexManager @Bean

  3. couchbaseCustomConversions라는 이름의 CustomConversions @Bean.

자신의 설정에서 그 이름을 하드 코딩하지 않으려면 Spring Data Couchbase에서 제공하는 BeanNames를 다시 사용할 수 있습니다. 예를 들어 다음과 같이 사용할 변환기를 사용자 정의 할 수 있습니다.

@Configuration
public class SomeConfiguration {

	@Bean(BeanNames.COUCHBASE_CUSTOM_CONVERSIONS)
	public CustomConversions myCustomConversions() {
		return new CustomConversions(...);
	}

	// ...

}

Spring Data Couchbase의 자동 설정을 완전히 우회하려면 org.springframework.data.couchbase.config.AbstractCouchbaseDataConfiguration을 직접 구현하십시오.

32.9 LDAP

LDAP (Lightweight Directory Access Protocol)는 IP 네트워크를 통해 분산 디렉토리 정보 서비스에 액세스하고이를 유지 관리하기위한 개방적이고 벤더 중립적 인 업계 표준 애플리케이션 프로토콜입니다. Spring Boot는 호환 LDAP 서버를 자동으로 구성 할뿐만 아니라 UnboundID에서 내장 메모리 내장 LDAP 서버를 지원합니다.

LDAP 추상화는 Spring Data LDAP에 의해 제공됩니다. 의존성을 편리한 방식으로 수집하기위한 spring-boot-startter-data-ldap "Starter"가 있습니다.

LDAP는 조직이나, 개체, 그리고 인터넷이나 기업 내의 인트라넷 등 네트웍 상에 있는 파일이나 장치들과 같은 자원 등의 위치를 찾을 수 있게 해주는 소프트웨어 프로토콜 출처: https://jabcholove.tistory.com/89 [잡초사랑]

nosql이랑 무슨 관계일까?

Hierarchical Database model(based on parent/child relationships, like in XML) 이래

참조 : https://stackoverflow.com/questions/7782209/is-mongodb-and-ldap-the-same-concept

32.9.1 LDAP 서버에 연결

LDAP 서버에 연결하려면 spring-boot-startter-data-ldap "Starter"또는 spring-ldap-core에 대한 종속성을 선언 한 다음 application.properties에 서버의 URL을 선언하십시오. 다음 예제 :

spring.ldap.urls=ldap://myserver:1235
spring.ldap.username=admin
spring.ldap.password=secret

연결 설정을 사용자 정의해야하는 경우 spring.ldap.base 및 spring.ldap.base-environment 등록 정보를 사용할 수 있습니다.

LdapContextSource는 이러한 설정을 기반으로 자동 구성됩니다. 예를 들어 PooledContextSource를 사용하기 위해 사용자 정의해야하는 경우에도 자동 구성된 LdapContextSource를 삽입 할 수 있습니다. 사용자 정의 된 ContextSource를 @Primary로 플래그하여 자동 구성된 LdapTemplate를 사용하도록하십시오.

32.9.2 Spring Data LDAP Repositories

Spring 데이터는 LDAP에 대한 저장소 지원을 포함합니다. Spring 데이터 LDAP에 대한 자세한 내용은 참조 문서를 참조하십시오.

다음 예제와 같이 다른 Spring Bean과 마찬가지로 자동 구성된 LdapTemplate 인스턴스를 삽입 할 수도 있습니다.

@Component
public class MyBean {

	private final LdapTemplate template;

	@Autowired
	public MyBean(LdapTemplate template) {
		this.template = template;
	}

	// ...

}

32.9.3 임베디드 인메모리 LDAP 서버

테스트 목적으로, Spring Boot는 UnboundID로부터 인 - 메모리 LDAP 서버의 자동 설정을 지원합니다. 서버를 구성하려면 다음과 같이 com.unboundid : unboundid-ldapsdk에 종속성을 추가하고 base-dn 등록 정보를 선언하십시오.

spring.ldap.embedded.base-dn=dc=spring,dc=io

그러나 고유 이름에는 일반적으로 쉼표가 포함되어 있으므로 정확한 표기법을 사용하여 정의해야합니다. 따라서 여러 기본 -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 속성을 지정할 필요가 없습니다.

클래스 경로에 schema.ldif 파일이 있으면 서버를 초기화하는 데 사용됩니다. 다른 리소스에서 초기화 스크립트를로드하려면 spring.ldap.embedded.ldif 속성을 사용할 수도 있습니다.

기본적으로 표준 스키마는 LDIF 파일의 유효성을 검사하는 데 사용됩니다. spring.ldap.embedded.validation.enabled 속성을 설정하여 유효성 검사를 모두 해제 할 수 있습니다. 사용자 정의 속성이있는 경우 spring.ldap.embedded.validation.schema를 사용하여 사용자 정의 속성 유형 또는 객체 클래스를 정의 할 수 있습니다.

32.10 InfluxDB

InfluxDB는 운영 모니터링, 응용 프로그램 메트릭, Internet-of-Things 센서 데이터 및 실시간 분석과 같은 분야에서 시계열 데이터의 신속한 고 가용성 스토리지 및 검색을 위해 최적화 된 오픈 소스 시계열 데이터베이스입니다.

시계열 : 시계열(時系列, time series)은 일정 시간 간격으로 배치된 데이터들의 수열을 말한다.

32.10.1 InfluxDB에 연결

Spring 부트는 InfluxDB 인스턴스를 자동으로 구성합니다. 다음 예에서와 같이 유입 경로 -Max 클라이언트가 클래스 경로에 있고 데이터베이스의 URL이 설정되어 있으면 제공됩니다.

spring.influx.url=https://172.0.0.1:8086

InfluxDB에 대한 연결에 사용자와 암호가 필요한 경우 이에 따라 spring.influx.user 및 spring.influx.password 속성을 설정할 수 있습니다.

InfluxDB는 OkHttp를 사용합니다. InfluxDB가 사용하는 http 클라이언트를 조정해야하는 경우 InfluxDbOkHttpClientBuilderProvider Bean을 등록 할 수 있습니다.

Last updated