commit
						c16eeea003
					
				| @ -92,6 +92,7 @@ | ||||
|         <module>spring-boot-3-observation</module> | ||||
|         <module>spring-boot-3-test-pitfalls</module> | ||||
|         <module>spring-boot-3-testcontainers</module> | ||||
|         <module>spring-boot-3-2</module> | ||||
|         <module>spring-boot-resilience4j</module> | ||||
|         <module>spring-boot-properties</module> | ||||
|         <module>spring-boot-properties-2</module> | ||||
|  | ||||
							
								
								
									
										262
									
								
								spring-boot-modules/spring-boot-3-2/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										262
									
								
								spring-boot-modules/spring-boot-3-2/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,262 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||
|          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
|     <modelVersion>4.0.0</modelVersion> | ||||
|     <artifactId>spring-boot-3-2</artifactId> | ||||
|     <version>0.0.1-SNAPSHOT</version> | ||||
|     <name>spring-boot-3-2</name> | ||||
|     <description>Demo project for Spring Boot</description> | ||||
| 
 | ||||
|     <parent> | ||||
|         <groupId>com.baeldung</groupId> | ||||
|         <artifactId>parent-boot-3</artifactId> | ||||
|         <version>0.0.1-SNAPSHOT</version> | ||||
|         <relativePath>../../parent-boot-3</relativePath> | ||||
|     </parent> | ||||
| 
 | ||||
|     <dependencies> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-web</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-hateoas</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-validation</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-jpa</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-webflux</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.mock-server</groupId> | ||||
|             <artifactId>mockserver-netty</artifactId> | ||||
|             <version>${mockserver.version}</version> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <dependency> | ||||
|             <groupId>org.mock-server</groupId> | ||||
|             <artifactId>mockserver-client-java</artifactId> | ||||
|             <version>${mockserver.version}</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>com.h2database</groupId> | ||||
|             <artifactId>h2</artifactId> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-devtools</artifactId> | ||||
|             <scope>runtime</scope> | ||||
|             <optional>true</optional> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-configuration-processor</artifactId> | ||||
|             <optional>true</optional> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springdoc</groupId> | ||||
|             <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> | ||||
|             <version>${springdoc.version}</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.projectlombok</groupId> | ||||
|             <artifactId>lombok</artifactId> | ||||
|             <optional>true</optional> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.mapstruct</groupId> | ||||
|             <artifactId>mapstruct</artifactId> | ||||
|             <version>${mapstruct.version}</version> | ||||
|             <optional>true</optional> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-docker-compose</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-mongodb</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-actuator</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-test</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.postgresql</groupId> | ||||
|             <artifactId>postgresql</artifactId> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-amqp</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.amqp</groupId> | ||||
|             <artifactId>spring-rabbit-test</artifactId> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.data</groupId> | ||||
|             <artifactId>spring-data-redis</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>redis.clients</groupId> | ||||
|             <artifactId>jedis</artifactId> | ||||
|             <type>jar</type> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-redis</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.postgresql</groupId> | ||||
|             <artifactId>r2dbc-postgresql</artifactId> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-r2dbc</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>io.projectreactor</groupId> | ||||
|             <artifactId>reactor-test</artifactId> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-elasticsearch</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-cassandra</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-neo4j</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.kafka</groupId> | ||||
|             <artifactId>spring-kafka</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.kafka</groupId> | ||||
|             <artifactId>spring-kafka-test</artifactId> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-couchbase</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>io.micrometer</groupId> | ||||
|             <artifactId>micrometer-tracing-bridge-brave</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>io.zipkin.reporter2</groupId> | ||||
|             <artifactId>zipkin-reporter-brave</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>io.zipkin.reporter2</groupId> | ||||
|             <artifactId>zipkin-sender-urlconnection</artifactId> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
| 
 | ||||
|     <profiles> | ||||
| 
 | ||||
|         <profile> | ||||
|             <id>docker-compose</id> | ||||
|             <build> | ||||
|                 <plugins> | ||||
|                     <plugin> | ||||
|                         <groupId>org.springframework.boot</groupId> | ||||
|                         <artifactId>spring-boot-maven-plugin</artifactId> | ||||
|                         <configuration> | ||||
|                             <mainClass>com.baeldung.dockercompose.DockerComposeApplication</mainClass> | ||||
|                         </configuration> | ||||
|                     </plugin> | ||||
|                 </plugins> | ||||
|             </build> | ||||
|         </profile> | ||||
|         <profile> | ||||
|             <id>connection-details</id> | ||||
|             <build> | ||||
|                 <plugins> | ||||
|                     <plugin> | ||||
|                         <groupId>org.springframework.boot</groupId> | ||||
|                         <artifactId>spring-boot-maven-plugin</artifactId> | ||||
|                         <configuration> | ||||
|                             <mainClass>com.baeldung.connectiondetails.ConnectionDetailsApplication</mainClass> | ||||
|                         </configuration> | ||||
|                     </plugin> | ||||
|                 </plugins> | ||||
|             </build> | ||||
|         </profile> | ||||
|     </profiles> | ||||
| 
 | ||||
|     <build> | ||||
|         <pluginManagement> | ||||
|             <plugins> | ||||
|                 <plugin> | ||||
|                     <groupId>org.apache.maven.plugins</groupId> | ||||
|                     <artifactId>maven-compiler-plugin</artifactId> | ||||
|                     <configuration> | ||||
|                         <annotationProcessorPaths> | ||||
|                             <path> | ||||
|                                 <groupId>org.mapstruct</groupId> | ||||
|                                 <artifactId>mapstruct-processor</artifactId> | ||||
|                                 <version>${mapstruct.version}</version> | ||||
|                             </path> | ||||
|                             <path> | ||||
|                                 <groupId>org.projectlombok</groupId> | ||||
|                                 <artifactId>lombok</artifactId> | ||||
|                                 <version>${lombok.version}</version> | ||||
|                             </path> | ||||
|                             <!-- This is needed when using Lombok 1.18.16 and above --> | ||||
|                             <path> | ||||
|                                 <groupId>org.projectlombok</groupId> | ||||
|                                 <artifactId>lombok-mapstruct-binding</artifactId> | ||||
|                                 <version>${lombok-mapstruct-binding.version}</version> | ||||
|                             </path> | ||||
|                         </annotationProcessorPaths> | ||||
|                     </configuration> | ||||
|                 </plugin> | ||||
|             </plugins> | ||||
|         </pluginManagement> | ||||
|         <plugins> | ||||
|             <plugin> | ||||
|                 <groupId>org.springframework.boot</groupId> | ||||
|                 <artifactId>spring-boot-maven-plugin</artifactId> | ||||
|             </plugin> | ||||
|             <plugin> | ||||
|                 <groupId>org.apache.maven.plugins</groupId> | ||||
|                 <artifactId>maven-compiler-plugin</artifactId> | ||||
|                 <configuration> | ||||
|                     <compilerArgs>--enable-preview</compilerArgs> | ||||
|                 </configuration> | ||||
|             </plugin> | ||||
|         </plugins> | ||||
|     </build> | ||||
| 
 | ||||
|     <properties> | ||||
|         <mapstruct.version>1.5.2.Final</mapstruct.version> | ||||
|         <springdoc.version>2.0.0</springdoc.version> | ||||
|         <maven-surefire-plugin.version>3.0.0-M7</maven-surefire-plugin.version> | ||||
|         <mockserver.version>5.14.0</mockserver.version> | ||||
|         <lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version> | ||||
|     </properties> | ||||
| 
 | ||||
| </project> | ||||
| @ -0,0 +1,15 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| 
 | ||||
| import org.springframework.boot.SpringApplication; | ||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
| 
 | ||||
| @SpringBootApplication | ||||
| //@ComponentScan(basePackages = "com.baeldung.connectiondetails") | ||||
| public class ConnectionDetailsApplication { | ||||
| 
 | ||||
|     public static void main(String[] args) { | ||||
|         SpringApplication.run(ConnectionDetailsApplication.class, args); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,124 @@ | ||||
| package com.baeldung.connectiondetails.adapter; | ||||
| 
 | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| 
 | ||||
| public class VaultAdapter { | ||||
|     private static final Logger logger = LoggerFactory.getLogger(VaultAdapter.class); | ||||
|     public static String getSecret(String secretKey) { | ||||
|         logger.info("call vault to get the secret of key: " + secretKey); | ||||
| 
 | ||||
|         //Postgres keys | ||||
|         if (secretKey.equalsIgnoreCase("postgres_secret_key")) { | ||||
|             return "postgres"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("postgres_user_key")) { | ||||
|             return "postgres"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("postgres_jdbc_url")) { | ||||
|             return "jdbc:postgresql://localhost:15432/postgresdb"; | ||||
|         } | ||||
|         //RabbitMQ Server Keys | ||||
|         if (secretKey.equalsIgnoreCase("rabbitmq_username")) { | ||||
|             return "rabbitmquser"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("rabbitmq_password")) { | ||||
|             return "rabbitmq"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("rabbitmq_port")) { | ||||
|             return "5672"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("rabbitmq_host")) { | ||||
|             return "localhost"; | ||||
|         } | ||||
|         //Redis Server Keys | ||||
|         if (secretKey.equalsIgnoreCase("redis_username")) { | ||||
|             return null; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("redis_password")) { | ||||
|             return "redis"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("redis_port")) { | ||||
|             return "6379"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("redis_host")) { | ||||
|             return "localhost"; | ||||
|         } | ||||
|         //Mongo DB Keys | ||||
|         if (secretKey.equalsIgnoreCase("mongo_connection_string")) { | ||||
|             return "mongodb://localhost:27017/demodb"; | ||||
|         } | ||||
| 
 | ||||
|         //r2dbc Keys | ||||
|         if (secretKey.equalsIgnoreCase("r2dbc_postgres_user")) { | ||||
|             return "postgres"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("r2dbc_postgres_secret")) { | ||||
|             return "postgres"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("r2dbc_postgres_host")) { | ||||
|             return "localhost"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("r2dbc_postgres_port")) { | ||||
|             return "15432"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("r2dbc_postgres_database")) { | ||||
|             return "postgresdb"; | ||||
|         } | ||||
|         //Elastic Search Keys | ||||
|         if (secretKey.equalsIgnoreCase("elastic_user")) { | ||||
|             return "elastic"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("elastic_secret")) { | ||||
|             return "secret"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("elastic_host")) { | ||||
|             return "localhost"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("elastic_port1")) { | ||||
|             return "19200"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("elastic_port2")) { | ||||
|             return "19300"; | ||||
|         } | ||||
|         //Cassandra keys | ||||
|         if (secretKey.equalsIgnoreCase("cassandra_user")) { | ||||
|             return "cassandra"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("cassandra_secret")) { | ||||
|             return "secret"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("cassandra_host")) { | ||||
|             return "localhost"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("cassandra_port")) { | ||||
|             return "19042"; | ||||
|         } | ||||
|         //Neo4j Keys | ||||
|         if (secretKey.equalsIgnoreCase("neo4j_secret")) { | ||||
|             return "neo4j123"; | ||||
|         } | ||||
|         if (secretKey.equalsIgnoreCase("neo4j_uri")) { | ||||
|             return "bolt://localhost:17687"; | ||||
|         } | ||||
|         //Kafka Keys | ||||
|         if (secretKey.equalsIgnoreCase("kafka_servers")) { | ||||
|             return "localhost:19092"; | ||||
|         } | ||||
|         //Couchbase Keys | ||||
|         if(secretKey.equalsIgnoreCase("couch_user")) { | ||||
|             return "Administrator"; | ||||
|         } | ||||
|         if(secretKey.equalsIgnoreCase("couch_secret")) { | ||||
|             return "password"; | ||||
|         } | ||||
|         if(secretKey.equalsIgnoreCase("couch_connection_string")) { | ||||
|             return "couchbase://127.0.0.1:8092"; | ||||
|         } | ||||
|         //Zipkin Keys | ||||
|         if(secretKey.equalsIgnoreCase("zipkin_span_endpoint")) { | ||||
|             return "http://localhost:9411/api/v2/spans"; | ||||
|         } | ||||
|         return "secretVal"; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,32 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import org.springframework.boot.autoconfigure.cassandra.CassandraConnectionDetails; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class CustomCassandraConnectionDetails implements CassandraConnectionDetails { | ||||
|     @Override | ||||
|     public List<Node> getContactPoints() { | ||||
|         Node node = new Node( | ||||
|                 VaultAdapter.getSecret("cassandra_host"), | ||||
|                 Integer.parseInt(VaultAdapter.getSecret("cassandra_port")) | ||||
|         ); | ||||
|         return List.of(node); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getUsername() { | ||||
|         return VaultAdapter.getSecret("cassandra_user"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getPassword() { | ||||
|         return VaultAdapter.getSecret("cassandra_secret"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getLocalDatacenter() { | ||||
|         return "datacenter-1"; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.cassandra.CassandraConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("cassandra") | ||||
| public class CustomCassandraConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     @Primary | ||||
|     public CassandraConnectionDetails getCustomCassandraConnectionDetails() { | ||||
|         return new CustomCassandraConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,21 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import org.springframework.boot.autoconfigure.couchbase.CouchbaseConnectionDetails; | ||||
| 
 | ||||
| public class CustomCouchBaseConnectionDetails implements CouchbaseConnectionDetails { | ||||
|     @Override | ||||
|     public String getConnectionString() { | ||||
|         return VaultAdapter.getSecret("couch_connection_string"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getUsername() { | ||||
|         return VaultAdapter.getSecret("couch_user"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getPassword() { | ||||
|         return VaultAdapter.getSecret("couch_secret"); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,16 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.couchbase.CouchbaseConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("couch") | ||||
| 
 | ||||
| public class CustomCouchBaseConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     public CouchbaseConnectionDetails getCouchBaseConnectionDetails() { | ||||
|         return new CustomCouchBaseConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,29 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchConnectionDetails; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class CustomElasticsearchConnectionDetails implements ElasticsearchConnectionDetails { | ||||
|     @Override | ||||
|     public List<Node> getNodes() { | ||||
|         Node node1 = new Node( | ||||
|                 VaultAdapter.getSecret("elastic_host"), | ||||
|                 Integer.parseInt(VaultAdapter.getSecret("elastic_port1")), | ||||
|                 Node.Protocol.HTTP | ||||
|         ); | ||||
|         return List.of(node1); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getUsername() { | ||||
|         return VaultAdapter.getSecret("elastic_user"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getPassword() { | ||||
|         return VaultAdapter.getSecret("elastic_secret"); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("elastic") | ||||
| public class CustomElasticsearchConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     @Primary | ||||
|     public ElasticsearchConnectionDetails getCustomElasticConnectionDetails() { | ||||
|         return new CustomElasticsearchConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,13 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class CustomKafkaConnectionDetails implements KafkaConnectionDetails { | ||||
|     @Override | ||||
|     public List<String> getBootstrapServers() { | ||||
|         return List.of(VaultAdapter.getSecret("kafka_servers")); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,15 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("kafka") | ||||
| public class CustomKafkaConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     public KafkaConnectionDetails getKafkaConnectionDetails() { | ||||
|         return new CustomKafkaConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,24 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import org.neo4j.driver.AuthToken; | ||||
| import org.neo4j.driver.AuthTokens; | ||||
| import org.springframework.boot.autoconfigure.neo4j.Neo4jConnectionDetails; | ||||
| 
 | ||||
| import java.net.URI; | ||||
| import java.net.URISyntaxException; | ||||
| 
 | ||||
| public class CustomNeo4jConnectionDetails implements Neo4jConnectionDetails { | ||||
|     @Override | ||||
|     public URI getUri() { | ||||
|         try { | ||||
|             return new URI(VaultAdapter.getSecret("neo4j_uri")); | ||||
|         } catch (URISyntaxException e) { | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|     } | ||||
|     @Override | ||||
|     public AuthToken getAuthToken() { | ||||
|         return AuthTokens.basic("neo4j", VaultAdapter.getSecret("neo4j_secret")); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.neo4j.Neo4jConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("neo4j") | ||||
| public class CustomNeo4jConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     @Primary | ||||
|     public Neo4jConnectionDetails getNeo4jConnectionDetails() { | ||||
|         return new CustomNeo4jConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,11 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConnectionDetails; | ||||
| 
 | ||||
| public class CustomZipkinConnectionDetails implements ZipkinConnectionDetails { | ||||
|     @Override | ||||
|     public String getSpanEndpoint() { | ||||
|         return VaultAdapter.getSecret("zipkin_span_endpoint"); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("zipkin") | ||||
| public class CustomZipkinConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     @Primary | ||||
|     public ZipkinConnectionDetails getZipkinConnectionDetails() { | ||||
|         return new CustomZipkinConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("jdbc") | ||||
| public class JdbcConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     @Primary | ||||
|     public JdbcConnectionDetails getPostgresConnection() { | ||||
|         return new PostgresConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,14 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import com.mongodb.ConnectionString; | ||||
| import org.springframework.boot.autoconfigure.mongo.MongoConnectionDetails; | ||||
| 
 | ||||
| public class MongoDBConnectionDetails implements MongoConnectionDetails { | ||||
|     @Override | ||||
|     public ConnectionString getConnectionString() { | ||||
|         return new ConnectionString(VaultAdapter.getSecret("mongo_connection_string")); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.mongo.MongoConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("mongo") | ||||
| public class MongoDBConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     @Primary | ||||
|     public MongoConnectionDetails getMongoConnectionDetails() { | ||||
|         return new MongoDBConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,21 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; | ||||
| 
 | ||||
| public class PostgresConnectionDetails implements JdbcConnectionDetails { | ||||
|     @Override | ||||
|     public String getUsername() { | ||||
|         return VaultAdapter.getSecret("postgres_user_key"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getPassword() { | ||||
|         return VaultAdapter.getSecret("postgres_secret_key"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getJdbcUrl() { | ||||
|         return VaultAdapter.getSecret("postgres_jdbc_url"); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import io.r2dbc.spi.ConnectionFactoryOptions; | ||||
| import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails; | ||||
| 
 | ||||
| public class R2dbcPostgresConnectionDetails implements R2dbcConnectionDetails { | ||||
|     @Override | ||||
|     public ConnectionFactoryOptions getConnectionFactoryOptions() { | ||||
| 
 | ||||
|         ConnectionFactoryOptions options = ConnectionFactoryOptions.builder() | ||||
|           .option(ConnectionFactoryOptions.DRIVER, "postgresql") | ||||
|           .option(ConnectionFactoryOptions.HOST, VaultAdapter.getSecret("r2dbc_postgres_host")) | ||||
|           .option(ConnectionFactoryOptions.PORT, Integer.valueOf(VaultAdapter.getSecret("r2dbc_postgres_port"))) | ||||
|           .option(ConnectionFactoryOptions.USER, VaultAdapter.getSecret("r2dbc_postgres_user")) | ||||
|           .option(ConnectionFactoryOptions.PASSWORD, VaultAdapter.getSecret("r2dbc_postgres_secret")) | ||||
|           .option(ConnectionFactoryOptions.DATABASE, VaultAdapter.getSecret("r2dbc_postgres_database")) | ||||
|           .build(); | ||||
| 
 | ||||
|         return options; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("r2dbc") | ||||
| public class R2dbcPostgresConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     @Primary | ||||
|     public R2dbcConnectionDetails getR2dbcPostgresConnectionDetails() { | ||||
|         return new R2dbcPostgresConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,34 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import org.springframework.boot.autoconfigure.amqp.RabbitConnectionDetails; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class RabbitMQConnectionDetails implements RabbitConnectionDetails { | ||||
|     @Override | ||||
|     public String getUsername() { | ||||
|         return VaultAdapter.getSecret("rabbitmq_username"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getPassword() { | ||||
|         return VaultAdapter.getSecret("rabbitmq_password"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getVirtualHost() { | ||||
|         return "/"; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<Address> getAddresses() { | ||||
|         return List.of(this.getFirstAddress()); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Address getFirstAddress() { | ||||
|         return new Address(VaultAdapter.getSecret("rabbitmq_host"), | ||||
|                 Integer.parseInt(VaultAdapter.getSecret("rabbitmq_port"))); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.amqp.RabbitConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("rabbitmq") | ||||
| public class RabbitMQConnectionDetailsConfiguration { | ||||
|     @Primary | ||||
|     @Bean | ||||
|     public RabbitConnectionDetails getRabbitmqConnection() { | ||||
|         return new RabbitMQConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,26 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.adapter.VaultAdapter; | ||||
| import org.springframework.boot.autoconfigure.data.redis.RedisConnectionDetails; | ||||
| 
 | ||||
| public class RedisCacheConnectionDetails implements RedisConnectionDetails { | ||||
|     @Override | ||||
|     public String getPassword() { | ||||
|         return VaultAdapter.getSecret("redis_password"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Standalone getStandalone() { | ||||
|         return new Standalone() { | ||||
|             @Override | ||||
|             public String getHost() { | ||||
|                 return VaultAdapter.getSecret("redis_host"); | ||||
|             } | ||||
| 
 | ||||
|             @Override | ||||
|             public int getPort() { | ||||
|                 return Integer.parseInt(VaultAdapter.getSecret("redis_port")); | ||||
|             } | ||||
|         }; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.connectiondetails.configuration; | ||||
| 
 | ||||
| import org.springframework.boot.autoconfigure.data.redis.RedisConnectionDetails; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Primary; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| 
 | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Profile("redis") | ||||
| public class RedisConnectionDetailsConfiguration { | ||||
|     @Bean | ||||
|     @Primary | ||||
|     public RedisConnectionDetails getRedisCacheConnection() { | ||||
|         return new RedisCacheConnectionDetails(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,19 @@ | ||||
| package com.baeldung.connectiondetails.controller; | ||||
| 
 | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.ResponseBody; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| 
 | ||||
| @RestController | ||||
| public class ZipkinDemoController { | ||||
| 
 | ||||
|     Logger logger = LoggerFactory.getLogger(ZipkinDemoController.class); | ||||
| 
 | ||||
|     @GetMapping("/zipkin/test") | ||||
|     public @ResponseBody String testMethod() { | ||||
|         logger.info("This is a test"); | ||||
|         return "This is a test"; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,27 @@ | ||||
| package com.baeldung.connectiondetails.entity.elastic; | ||||
| 
 | ||||
| import org.springframework.data.annotation.Id; | ||||
| import org.springframework.data.elasticsearch.annotations.Document; | ||||
| 
 | ||||
| @Document(indexName = "person") | ||||
| public class Person { | ||||
|     String name; | ||||
|     @Id | ||||
|     String ssn; | ||||
| 
 | ||||
|     public String getName() { | ||||
|         return name; | ||||
|     } | ||||
| 
 | ||||
|     public void setName(String name) { | ||||
|         this.name = name; | ||||
|     } | ||||
| 
 | ||||
|     public String getSsn() { | ||||
|         return ssn; | ||||
|     } | ||||
| 
 | ||||
|     public void setSsn(String ssn) { | ||||
|         this.ssn = ssn; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,27 @@ | ||||
| package com.baeldung.connectiondetails.entity.neo4j; | ||||
| 
 | ||||
| import org.springframework.data.neo4j.core.schema.Id; | ||||
| import org.springframework.data.neo4j.core.schema.Node; | ||||
| 
 | ||||
| @Node | ||||
| public class Person { | ||||
|     @Id | ||||
|     String name; | ||||
|     String zipcode; | ||||
| 
 | ||||
|     public String getName() { | ||||
|         return name; | ||||
|     } | ||||
| 
 | ||||
|     public void setName(String name) { | ||||
|         this.name = name; | ||||
|     } | ||||
| 
 | ||||
|     public String getZipcode() { | ||||
|         return zipcode; | ||||
|     } | ||||
| 
 | ||||
|     public void setZipcode(String zipcode) { | ||||
|         this.zipcode = zipcode; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,11 @@ | ||||
| spring.docker.compose.enabled=true | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-cassandra.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.profiles.active=cassandra | ||||
| spring.cassandra.local-datacenter=dc1 | ||||
| #spring.cassandra.keyspace-name=spring_cassandra | ||||
| #spring.cassandra.schema-action=CREATE_IF_NOT_EXISTS | ||||
| spring.data.cassandra.request.timeout=20000 # Set your desired timeout in milliseconds | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,8 @@ | ||||
| spring.profiles.active=couch | ||||
| spring.docker.compose.enabled=false | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-couch.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.couchbase.bucket.name=travel-sample | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.elasticsearch.ReactiveElasticsearchClientAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,7 @@ | ||||
| spring.docker.compose.enabled=true | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-elastic.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.profiles.active=elastic | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,7 @@ | ||||
| spring.docker.compose.enabled=true | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-jdbc.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.profiles.active=jdbc | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,7 @@ | ||||
| spring.docker.compose.enabled=true | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-kafka.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.profiles.active=kafka | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,8 @@ | ||||
| spring.docker.compose.enabled=true | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-mongo.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.profiles.active=mongo | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration | ||||
| spring.data.mongodb.database=demodb | ||||
| @ -0,0 +1,7 @@ | ||||
| spring.docker.compose.enabled=true | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-neo4j.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.profiles.active=neo4j | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,7 @@ | ||||
| spring.docker.compose.enabled=true | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-jdbc.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.profiles.active=r2dbc | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,7 @@ | ||||
| spring.docker.compose.enabled=true | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-rabbitmq.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.profiles.active=rabbitmq | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,7 @@ | ||||
| spring.docker.compose.enabled=true | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-redis.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.profiles.active=redis | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,9 @@ | ||||
| spring.profiles.active=zipkin | ||||
| spring.docker.compose.enabled=false | ||||
| spring.docker.compose.file=./connectiondetails/docker/docker-compose-zipkin.yml | ||||
| spring.docker.compose.skip.in-tests=false | ||||
| spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true | ||||
| spring.mustache.check-template-location=false | ||||
| spring.application.name=baeldung | ||||
| management.tracing.sampling.probability=1.0 | ||||
| spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration, org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.elasticsearch.ReactiveElasticsearchClientAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveRepositoriesAutoConfiguration | ||||
| @ -0,0 +1,9 @@ | ||||
| version: '3.8' | ||||
| services: | ||||
|   cassandra: | ||||
|     image: 'cassandra:latest' | ||||
|     environment: | ||||
|       - 'CASSANDRA_DC=datacenter-1' | ||||
|       - 'CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch' | ||||
|     ports: | ||||
|       - '19042:9042' | ||||
| @ -0,0 +1,12 @@ | ||||
| version: '3.8' | ||||
| services: | ||||
|   couchbase: | ||||
|     image: couchbase/server-sandbox:7.0.0 | ||||
|     ports: | ||||
|       - "8091-8095:8091-8095" | ||||
|       - "9102:9102" | ||||
|       - "11210:11210" | ||||
|     expose: | ||||
|       - "8091" | ||||
|       - "8094" | ||||
|     container_name: couchbase-sandbox-7.0.0-mm | ||||
| @ -0,0 +1,12 @@ | ||||
| version: '3.8' | ||||
| services: | ||||
|   elasticsearch: | ||||
|     image: 'docker.elastic.co/elasticsearch/elasticsearch:7.17.10' | ||||
|     environment: | ||||
|       - 'ELASTIC_USERNAME=elastic' | ||||
|       - 'ELASTIC_PASSWORD=secret' | ||||
|       - 'discovery.type=single-node' | ||||
|       - 'xpack.security.enabled=false' | ||||
|     ports: | ||||
|       - '19200:9200' | ||||
| #      - '19300:9300' | ||||
| @ -0,0 +1,10 @@ | ||||
| version: '3.8' | ||||
| services: | ||||
|   database: | ||||
|     image: 'postgres:13.1-alpine' | ||||
|     ports: | ||||
|       - '15432:5432' | ||||
|     environment: | ||||
|       - 'POSTGRES_USER=postgres' | ||||
|       - 'POSTGRES_DB=postgresdb' | ||||
|       - 'POSTGRES_PASSWORD=postgres' | ||||
| @ -0,0 +1,38 @@ | ||||
| version: '3' | ||||
| services: | ||||
|   zookeeper: | ||||
|     image: confluentinc/cp-zookeeper:latest | ||||
|     container_name: zookeeper | ||||
|     environment: | ||||
|       ZOOKEEPER_CLIENT_PORT: 2181 | ||||
|       ZOOKEEPER_TICK_TIME: 2000 | ||||
|     ports: | ||||
|       - "2181:2181" | ||||
| 
 | ||||
|   schema-registry: | ||||
|     image: confluentinc/cp-schema-registry:latest | ||||
|     hostname: schema-registry | ||||
|     depends_on: | ||||
|       - kafka-broker-1 | ||||
|     ports: | ||||
|       - "8081:8081" | ||||
|     environment: | ||||
|       SCHEMA_REGISTRY_HOST_NAME: schema-registry | ||||
|       SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181' | ||||
|       SCHEMA_REGISTRY_LISTENERS: http://schema-registry:8081 | ||||
|       SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka-broker-1:9092,PLAINTEXT_INTERNAL://localhost:19092 | ||||
|       SCHEMA_REGISTRY_DEBUG: 'true' | ||||
| 
 | ||||
|   kafka-broker-1: | ||||
|     image: confluentinc/cp-kafka:latest | ||||
|     hostname: kafka-broker-1 | ||||
|     ports: | ||||
|       - "19092:19092" | ||||
|     depends_on: | ||||
|       - zookeeper | ||||
|     environment: | ||||
|       KAFKA_BROKER_ID: 1 | ||||
|       KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181' | ||||
|       KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT | ||||
|       KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-broker-1:9092,PLAINTEXT_INTERNAL://localhost:19092 | ||||
|       KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 | ||||
| @ -0,0 +1,10 @@ | ||||
| version: '3.8' | ||||
| services: | ||||
|   mongodb: | ||||
|     image: 'mongo:latest' | ||||
|     environment: | ||||
|       - 'MONGO_INITDB_DATABASE=demodb' | ||||
| #      - 'MONGO_INITDB_ROOT_PASSWORD=Mongo123' | ||||
| #      - 'MONGO_INITDB_ROOT_USERNAME=mongouser' | ||||
|     ports: | ||||
|       - '27017:27017' | ||||
| @ -0,0 +1,8 @@ | ||||
| version: '3.8' | ||||
| services: | ||||
|   neo4j: | ||||
|     image: 'neo4j:latest' | ||||
|     ports: | ||||
|       - '17687:7687' | ||||
|     environment: | ||||
|       NEO4J_AUTH: neo4j/neo4j123 | ||||
| @ -0,0 +1,9 @@ | ||||
| version: '3.8' | ||||
| services: | ||||
|   rabbitmq: | ||||
|     image: 'rabbitmq:latest' | ||||
|     environment: | ||||
|       - 'RABBITMQ_DEFAULT_PASS=rabbitmq' | ||||
|       - 'RABBITMQ_DEFAULT_USER=rabbitmquser' | ||||
|     ports: | ||||
|       - '5672:5672' | ||||
| @ -0,0 +1,8 @@ | ||||
| version: '3.8' | ||||
| services: | ||||
|   redis: | ||||
|     image: 'redis:latest' | ||||
|     ports: | ||||
|       - '6379:6379' | ||||
|     environment: | ||||
|       - 'REDIS_REQUIREPASS=redis' | ||||
| @ -0,0 +1,10 @@ | ||||
| version: '3' | ||||
| services: | ||||
|   zipkin: | ||||
|     image: 'openzipkin/zipkin:latest' | ||||
|     ports: | ||||
|       - "9411:9411" | ||||
| #    environment: | ||||
| #      - ZIPKIN_AUTH_USERNAME=your-username | ||||
| #      - ZIPKIN_AUTH_PASSWORD=your-password | ||||
|     # Add other necessary configurations here | ||||
| @ -0,0 +1,27 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface CassandraConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getContactPoints():List<Node> | ||||
|    +getLocalDatacenter():String | ||||
| } | ||||
| class CustomCouchBaseConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getContactPoints():List<Node> | ||||
|    +getLocalDatacenter():String | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class CustomCassandraConnectionDetailsConfiguration { | ||||
|     +getCustomCassandraConnectionDetails():CassandraConnectionDetails | ||||
| } | ||||
| CustomCouchBaseConnectionDetails -left-> VaultAdapter:uses | ||||
| CustomCouchBaseConnectionDetails -right-|> CassandraConnectionDetails : implements | ||||
| CustomCassandraConnectionDetailsConfiguration -up-> CustomCassandraConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,16 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/sequence-diagram | ||||
| skinparam sequenceMessageAlign direction | ||||
| skinparam handwritten true | ||||
| skinparam sequence { | ||||
| ParticipantBackgroundColor beige | ||||
| ParticipantPadding 50 | ||||
| } | ||||
| autonumber | ||||
| 
 | ||||
| "Spring Boot" -[#63b175]> "Hashicorp Vault": Secret Request | ||||
| "Hashicorp Vault" -[#63b175]-> "Spring Boot": Secret Response | ||||
| "Spring Boot" -[#63b175]> "Remote Service": Connection Request | ||||
| 
 | ||||
| "Remote Service" -[#63b175]-> "Spring Boot": Connection Response | ||||
| @enduml | ||||
| @ -0,0 +1,25 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface CouchbaseConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getConnectionString():String | ||||
| } | ||||
| class CustomCouchBaseConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getConnectionString():String | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class CustomCouchBaseConnectionDetailsConfiguration { | ||||
|     +getCouchBaseConnectionDetails():CouchbaseConnectionDetails | ||||
| } | ||||
| CustomCouchBaseConnectionDetails -left-> VaultAdapter:uses | ||||
| CustomCouchBaseConnectionDetails -right-|> CouchbaseConnectionDetails : implements | ||||
| CustomCouchBaseConnectionDetailsConfiguration -up-> CustomCouchBaseConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,25 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface ElasticsearchConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getNodes():List<Node> | ||||
| } | ||||
| class CustomElasticsearchConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getNodes():List<Node> | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class CustomElasticsearchConnectionDetailsConfiguration { | ||||
|     +getCustomElasticConnectionDetails():ElasticsearchConnectionDetails | ||||
| } | ||||
| CustomElasticsearchConnectionDetails -left-> VaultAdapter:uses | ||||
| CustomElasticsearchConnectionDetails -right-|> ElasticsearchConnectionDetails : implements | ||||
| CustomElasticsearchConnectionDetailsConfiguration -up-> CustomElasticsearchConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,25 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface JdbcConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getJdbcUrl():String | ||||
| } | ||||
| class PostgresConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getJdbcUrl():String | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class JdbcConnectonDetailsConfiguration { | ||||
|     +getPostgresConnection():JdbcConnectionDetails | ||||
| } | ||||
| PostgresConnectionDetails -left-> VaultAdapter:uses | ||||
| PostgresConnectionDetails -right-|> JdbcConnectionDetails : implements | ||||
| JdbcConnectonDetailsConfiguration -up-> PostgresConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,21 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface KafkaConnectionDetails { | ||||
|    +getBootstrapServers():List<String> | ||||
| } | ||||
| class CustomKafkaConnectionDetails { | ||||
| +getBootstrapServers():List<String> | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class CustomKafkaConnectionDetailsConfiguration { | ||||
|     +getKafkaConnectionDetails():KafkaConnectionDetails | ||||
| } | ||||
| CustomKafkaConnectionDetails -left-> VaultAdapter:uses | ||||
| CustomKafkaConnectionDetails -right-|> KafkaConnectionDetails:implements | ||||
| CustomKafkaConnectionDetailsConfiguration -up-> CustomKafkaConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,19 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface MongoConnectionDetails { | ||||
|     getConnectionString():ConnectionString | ||||
| } | ||||
| class MongoDBConnectionDetails { | ||||
|     getConnectionString():ConnectionString | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class MongoDBConnectionDetailsConfiguration { | ||||
|     +getMongoConnectionDetails() : MongoConnectionDetails | ||||
| } | ||||
| MongoDBConnectionDetails -left-> VaultAdapter:uses | ||||
| MongoDBConnectionDetails -right-|> MongoConnectionDetails : implements | ||||
| MongoDBConnectionDetailsConfiguration -up-> MongoDBConnectionDetails:uses | ||||
| @enduml | ||||
| @ -0,0 +1,23 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface Neo4jConnectionDetails { | ||||
|    +getUri():URI | ||||
|    +getAuthToken():AuthToken | ||||
| } | ||||
| class CustomNeo4jConnectionDetails { | ||||
|    +getUri():URI | ||||
|    +getAuthToken():AuthToken | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class CustomNeo4jConnectionDetailsConfiguration { | ||||
|     +getNeo4jConnectionDetails():Neo4jConnectionDetails | ||||
| } | ||||
| CustomNeo4jConnectionDetails -left-> VaultAdapter:uses | ||||
| CustomNeo4jConnectionDetails -right-|> Neo4jConnectionDetails:implements | ||||
| CustomNeo4jConnectionDetailsConfiguration -up-> CustomNeo4jConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,21 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface R2dbcConnectionDetails { | ||||
|    +getConnectionFactoryOptions():ConnectionFactoryOptions | ||||
| } | ||||
| class R2dbcPostgresConnectionDetails { | ||||
|    +getConnectionFactoryOptions():ConnectionFactoryOptions | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class R2dbcPostgresConnectionDetailsConfiguration { | ||||
|     +getR2dbcPostgresConnectionDetails():R2dbcConnectionDetails | ||||
| } | ||||
| R2dbcPostgresConnectionDetails -right-> VaultAdapter:uses | ||||
| R2dbcPostgresConnectionDetails -up-|> R2dbcConnectionDetails:implements | ||||
| R2dbcPostgresConnectionDetailsConfiguration -up-> R2dbcPostgresConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,27 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface RabbitConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getFirstAddress():Address | ||||
|    +getAddresses():List<Address> | ||||
| } | ||||
| class RabbitMQConnectionDetails { | ||||
|    +getUsername():String | ||||
|    +getPassword():String | ||||
|    +getFirstAddress():Address | ||||
|    +getAddresses():List<Address> | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class RabbitMQConnectionDetailsConfiguration { | ||||
|     +getRabbitmqConnection() : RabbitConnectionDetails | ||||
| } | ||||
| RabbitMQConnectionDetails -left-> VaultAdapter:uses | ||||
| RabbitMQConnectionDetails -right-|> RabbitConnectionDetails : implements | ||||
| RabbitMQConnectionDetailsConfiguration -up-> RabbitMQConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,23 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface RedisConnectionDetails { | ||||
|    +getPassword():String | ||||
|    +getStandalone():Standalone | ||||
| } | ||||
| class RedisCacheConnectionDetails { | ||||
|    +getPassword():String | ||||
|    +getStandalone():Standalone | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class RedisConnectonDetailsConfiguration { | ||||
|     +getRedisCacheConnection():RedisConnectionDetails | ||||
| } | ||||
| RedisCacheConnectionDetails -left-> VaultAdapter:uses | ||||
| RedisCacheConnectionDetails -right-|> RedisConnectionDetails : implements | ||||
| RedisConnectonDetailsConfiguration -up-> RedisCacheConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,21 @@ | ||||
| @startuml | ||||
| 'https://plantuml.com/class-diagram | ||||
| 
 | ||||
| interface ZipkinConnectionDetails { | ||||
|    +getSpanEndpoint():String | ||||
| } | ||||
| class CustomZipkinConnectionDetails { | ||||
|    +getSpanEndpoint():String | ||||
| } | ||||
| class VaultAdapter { | ||||
|    +getSecret(String secretKey):String | ||||
| } | ||||
| class CustomZipkinConnectionDetailsConfiguration { | ||||
|     +getZipkinConnectionDetails():ZipkinConnectionDetails | ||||
| } | ||||
| CustomZipkinConnectionDetails -left-> VaultAdapter:uses | ||||
| CustomZipkinConnectionDetails -right-|> ZipkinConnectionDetails:implements | ||||
| CustomZipkinConnectionDetailsConfiguration -up-> CustomZipkinConnectionDetails:uses | ||||
| 
 | ||||
| 
 | ||||
| @enduml | ||||
| @ -0,0 +1,37 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.CustomCassandraConnectionDetailsConfiguration; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.data.cassandra.core.CassandraTemplate; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertTrue; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(CustomCassandraConnectionDetailsConfiguration.class) | ||||
| @ComponentScan(basePackages = "com.baeldung.connectiondetails") | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-cassandra.properties"}) | ||||
| @ActiveProfiles("cassandra") | ||||
| public class CassandraConnectionDetailsIntegrationTest { | ||||
|     private static final Logger logger = LoggerFactory.getLogger(CassandraConnectionDetailsIntegrationTest.class); | ||||
|     @Autowired | ||||
|     private CassandraTemplate cassandraTemplate; | ||||
|     @Test | ||||
|     public void givenHashicorpVault_whenRunQuery_thenSuccess() { | ||||
|         boolean result = cassandraTemplate.getCqlOperations() | ||||
|                 .execute("CREATE KEYSPACE IF NOT EXISTS spring_cassandra" | ||||
|                         + " WITH replication = {'class':'SimpleStrategy', 'replication_factor':3}"); | ||||
|         logger.info("the result -" + result); | ||||
|         assertTrue(result); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,30 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.CustomCouchBaseConnectionDetailsConfiguration; | ||||
| import com.couchbase.client.java.Cluster; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(CustomCouchBaseConnectionDetailsConfiguration.class) | ||||
| @ComponentScan(basePackages = "com.baeldung.connectiondetails") | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-couch.properties"}) | ||||
| @ActiveProfiles("couch") | ||||
| public class CouchbaseConnectionDetailsIntegrationTest { | ||||
|     @Autowired | ||||
|     private Cluster cluster; | ||||
|     @Test | ||||
|     public void givenSecretVault_whenConnectWithCouch_thenSuccess() { | ||||
|         assertDoesNotThrow(cluster.ping()::version); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,45 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.CustomElasticsearchConnectionDetailsConfiguration; | ||||
| import com.baeldung.connectiondetails.entity.elastic.Person; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertTrue; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(CustomElasticsearchConnectionDetailsConfiguration.class) | ||||
| @ComponentScan(basePackages = "com.baeldung.connectiondetails") | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-elastic.properties"}) | ||||
| @ActiveProfiles("elastic") | ||||
| public class ElasticsearchConnectionDetailsIntegrationTest { | ||||
|     private static final Logger logger = LoggerFactory.getLogger(ElasticsearchConnectionDetailsIntegrationTest.class); | ||||
|     @Autowired | ||||
|     private ElasticsearchTemplate elasticsearchTemplate; | ||||
| 
 | ||||
|     @Before | ||||
|     public void prepare() { | ||||
|         if (elasticsearchTemplate.indexOps(Person.class).exists()) { | ||||
|             elasticsearchTemplate.indexOps(Person.class).delete(); | ||||
|         } | ||||
|     } | ||||
|     @Test | ||||
|     public void givenHashicorpVault_whenCreateIndexInElastic_thenSuccess() { | ||||
| 
 | ||||
|         boolean result = elasticsearchTemplate.indexOps(Person.class).create(); | ||||
|         logger.info("index created:" + result); | ||||
|         assertTrue(result); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,38 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.JdbcConnectionDetailsConfiguration; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.jdbc.core.JdbcTemplate; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import java.sql.Date; | ||||
| import java.time.LocalDate; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(JdbcConnectionDetailsConfiguration.class) | ||||
| @ComponentScan(basePackages = "com.baeldung.connectiondetails") | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-jdbc.properties"}) | ||||
| @ActiveProfiles("jdbc") | ||||
| public class JdbcConnectionDetailsIntegrationTest { | ||||
|     private static final Logger logger = LoggerFactory.getLogger(JdbcConnectionDetailsIntegrationTest.class); | ||||
|     @Autowired | ||||
|     private JdbcTemplate jdbcTemplate; | ||||
|     @Test | ||||
|     public void givenSecretVault_whenIntegrateWithPostgres_thenConnectionSuccessful() { | ||||
|         String sql = "select current_date;"; | ||||
|         Date date = jdbcTemplate.queryForObject(sql, Date.class); | ||||
|         assertEquals(LocalDate.now().toString(), date.toString()); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,32 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.CustomKafkaConnectionDetailsConfiguration; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.kafka.core.KafkaTemplate; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; | ||||
| 
 | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(CustomKafkaConnectionDetailsConfiguration.class) | ||||
| @ComponentScan(basePackages = "com.baeldung.connectiondetails") | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-kafka.properties"}) | ||||
| @ActiveProfiles("kafka") | ||||
| public class KafkaConnectionDetailsIntegrationTest { | ||||
|     @Autowired | ||||
|     private KafkaTemplate<String, String> kafkaTemplate; | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenSecretVault_whenPublishMsgToKafkaQueue_thenSuccess() { | ||||
|         assertDoesNotThrow(kafkaTemplate::getDefaultTopic); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,47 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.MongoDBConnectionDetailsConfiguration; | ||||
| import org.json.JSONException; | ||||
| import org.json.JSONObject; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration; | ||||
| import org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration; | ||||
| import org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.data.mongodb.core.MongoTemplate; | ||||
| import org.springframework.data.mongodb.core.query.Query; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(MongoDBConnectionDetailsConfiguration.class) | ||||
| @ComponentScan(basePackages = "com.baeldung.connectiondetails") | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-mongo.properties"}) | ||||
| @ActiveProfiles("mongo") | ||||
| public class MongoDBConnectionDetailsIntegrationTest { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private MongoTemplate mongoTemplate; | ||||
|     @Test | ||||
|     public void givenSecretVault_whenExecuteQueryOnMongoDB_ReturnResult() throws JSONException { | ||||
|         mongoTemplate.insert("{\"msg\":\"My First Entry in MongoDB\"}", "myDemoCollection"); | ||||
|         String result = mongoTemplate.find(new Query(), String.class, "myDemoCollection").get(0); | ||||
| 
 | ||||
|         JSONObject jsonObject = new JSONObject(result); | ||||
|         result = jsonObject.get("msg").toString(); | ||||
|         R2dbcAutoConfiguration r2dbcAutoConfiguration; | ||||
|         R2dbcDataAutoConfiguration r2dbcDataAutoConfiguration; | ||||
|         R2dbcRepositoriesAutoConfiguration r2dbcRepositoriesAutoConfiguration; | ||||
| 
 | ||||
|         assertEquals("My First Entry in MongoDB", result); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @ -0,0 +1,43 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.CustomNeo4jConnectionDetailsConfiguration; | ||||
| import com.baeldung.connectiondetails.entity.neo4j.Person; | ||||
| import org.junit.After; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.data.neo4j.core.Neo4jTemplate; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(CustomNeo4jConnectionDetailsConfiguration.class) | ||||
| @ComponentScan(basePackages = "com.baeldung.connectiondetails") | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-neo4j.properties"}) | ||||
| @ActiveProfiles("neo4j") | ||||
| public class Neo4jConnectionDetailsIntegrationTest { | ||||
|     @Autowired | ||||
|     private Neo4jTemplate neo4jTemplate; | ||||
| 
 | ||||
|     @After | ||||
|     public void cleanup() { | ||||
|         neo4jTemplate.deleteAll(Person.class); | ||||
|     } | ||||
|     @Test | ||||
|     public void giveSecretVault_whenRunQuery_thenSuccess() { | ||||
|         Person person = new Person(); | ||||
|         person.setName("James"); | ||||
|         person.setZipcode("751003"); | ||||
| 
 | ||||
|         Person data = neo4jTemplate.save(person); | ||||
|         assertEquals("James", data.getName()); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,39 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.R2dbcPostgresConnectionDetailsConfiguration; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.data.r2dbc.core.R2dbcEntityTemplate; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(R2dbcPostgresConnectionDetailsConfiguration.class) | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-r2dbc.properties"}) | ||||
| @ActiveProfiles("r2dbc") | ||||
| public class R2dbcConnectionDetailsIntegrationTest { | ||||
|     Logger logger = LoggerFactory.getLogger(R2dbcConnectionDetailsIntegrationTest.class); | ||||
|     @Autowired | ||||
|     private R2dbcEntityTemplate r2dbcEntityTemplate; | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenSecretVault_whenQueryPostgresReactive_thenSuccess() { | ||||
| 
 | ||||
|         String sql = "select * from information_schema.tables"; | ||||
| 
 | ||||
|         List<String> result = r2dbcEntityTemplate.getDatabaseClient().sql(sql).fetch().all() | ||||
|                 .map(r -> { | ||||
|                     return "hello " + r.get("table_name").toString(); | ||||
|                 }).collectList().block(); | ||||
|         logger.info("count ------" + result.size()); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,62 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.RabbitMQConnectionDetailsConfiguration; | ||||
| import org.junit.After; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.amqp.core.Queue; | ||||
| import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; | ||||
| import org.springframework.amqp.rabbit.core.RabbitAdmin; | ||||
| import org.springframework.amqp.rabbit.core.RabbitTemplate; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(RabbitMQConnectionDetailsConfiguration.class) | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-rabbitmq.properties"}) | ||||
| @ActiveProfiles("rabbitmq") | ||||
| public class RabbitmqConnectionDetailsIntegrationTest { | ||||
| 
 | ||||
|     private static final Logger logger = LoggerFactory.getLogger(RabbitmqConnectionDetailsIntegrationTest.class); | ||||
| 
 | ||||
|     @Autowired | ||||
|     private RabbitTemplate rabbitTemplate; | ||||
| 
 | ||||
|     @Autowired | ||||
|     private CachingConnectionFactory connectionFactory; | ||||
| 
 | ||||
|     private final static String queueName = "Test_Queue"; | ||||
| 
 | ||||
|     RabbitAdmin rabbitAdmin; | ||||
| 
 | ||||
|     @Before | ||||
|     public void setup() { | ||||
|         logger.info("create new queue"); | ||||
|         rabbitAdmin = new RabbitAdmin(connectionFactory); | ||||
|         logger.info("creating queue: " + rabbitAdmin.declareQueue(new Queue(queueName))); | ||||
|         connectionFactory.destroy(); | ||||
|     } | ||||
| 
 | ||||
|     @After | ||||
|     public void cleanup() { | ||||
|         logger.info("delete queue"); | ||||
|         this.rabbitAdmin.deleteQueue(queueName, false, true); | ||||
|     } | ||||
|     @Test | ||||
|     public void givenSecretVault_whenPublishMessageToRabbitmq_thenSuccess() { | ||||
|         logger.info("sending message to queue " + queueName); | ||||
|         final String MSG = "this is a test message"; | ||||
|         this.rabbitTemplate.convertAndSend(queueName, MSG); | ||||
|         assertEquals(MSG, this.rabbitTemplate.receiveAndConvert(queueName)); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,34 @@ | ||||
| package com.baeldung.connectiondetails; | ||||
| 
 | ||||
| import com.baeldung.connectiondetails.configuration.RedisConnectionDetailsConfiguration; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.data.redis.core.RedisTemplate; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = ConnectionDetailsApplication.class) | ||||
| @Import(RedisConnectionDetailsConfiguration.class) | ||||
| @TestPropertySource(locations = {"classpath:connectiondetails/application-redis.properties"}) | ||||
| @ActiveProfiles("redis") | ||||
| public class RedisCacheConnnectionDetailsIntegrationTest { | ||||
|     private static final Logger logger = LoggerFactory.getLogger(RedisCacheConnnectionDetailsIntegrationTest.class); | ||||
| 
 | ||||
|     @Autowired | ||||
|     RedisTemplate<String, String> redisTemplate; | ||||
| 
 | ||||
|     @Test | ||||
|     public void giveSecretVault_whenStoreInRedisCache_thenSuccess() { | ||||
|         redisTemplate.opsForValue().set("City", "New York"); | ||||
|         assertEquals("New York", redisTemplate.opsForValue().get("City")); | ||||
|     } | ||||
| } | ||||
| @ -1,7 +0,0 @@ | ||||
| spring: | ||||
|   docker: | ||||
|     compose: | ||||
|       enabled: true | ||||
|       file: docker-compose.yml | ||||
|   autoconfigure: | ||||
|     exclude: org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user