# Spring Data ArangoDB - Getting Started ## Supported versions | Spring Data ArangoDB | Spring Data | ArangoDB | |----------------------|-------------|----------------| | 1.0.0 | 1.13.x | 3.0*, 3.1, 3.2 | | 2.0.0 | 2.0.x | 3.0*, 3.1, 3.2 | Spring Data ArangoDB requires ArangoDB 3.0 or higher - which you can download [here](https://www.arangodb.com/download/) - and Java 8 or higher. **Note**: ArangoDB 3.0 does not support the default transport protocol [VelocyStream](https://github.com/arangodb/velocystream). A manual switch to HTTP is required. See chapter [configuration](#configuration). Also ArangoDB 3.0 does not support geospatial queries. ## Maven To use Spring Data ArangoDB in your project, your build automation tool needs to be configured to include and use the Spring Data ArangoDB dependency. Example with Maven: ```xml com.arangodb arangodb-spring-data {version} ``` There is a [demonstration app](https://github.com/arangodb/spring-data-demo), which contains common use cases and examples of how to use Spring Data ArangoDB's functionality. ## Configuration You can use Java to configure your Spring Data environment as show below. Setting up the underlying driver (`ArangoDB.Builder`) with default configuration automatically loads a properties file `arangodb.properties`, if it exists in the classpath. ```java @Configuration @EnableArangoRepositories(basePackages = { "com.company.mypackage" }) public class MyConfiguration extends AbstractArangoConfiguration { @Override public ArangoDB.Builder arango() { return new ArangoDB.Builder(); } @Override public String database() { // Name of the database to be used return "example-database"; } } ``` The driver is configured with some default values: property-key | description | default value -------------|-------------|-------------- arangodb.host | ArangoDB host | 127.0.0.1 arangodb.port | ArangoDB port | 8529 arangodb.timeout | socket connect timeout(millisecond) | 0 arangodb.user | Basic Authentication User | arangodb.password | Basic Authentication Password | arangodb.useSsl | use SSL connection | false To customize the configuration, the parameters can be changed in the Java code. ```java @Override public ArangoDB.Builder arango() { ArangoDB.Builder arango = new ArangoDB.Builder() .host("127.0.0.1") .port(8429) .user("root"); return arango; } ``` In addition you can use the *arangodb.properties* or a custom properties file to supply credentials to the driver. *Properties file* ``` arangodb.host=127.0.0.1 arangodb.port=8529 # arangodb.hosts=127.0.0.1:8529 could be used instead arangodb.user=root arangodb.password= ``` *Custom properties file* ```java @Override public ArangoDB.Builder arango() { InputStream in = MyClass.class.getResourceAsStream("my.properties"); ArangoDB.Builder arango = new ArangoDB.Builder() .loadProperties(in); return arango; } ``` **Note**: When using ArangoDB 3.0 it is required to set the transport protocol to HTTP and fetch the dependency `org.apache.httpcomponents:httpclient`. ```java @Override public ArangoDB.Builder arango() { ArangoDB.Builder arango = new ArangoDB.Builder() .useProtocol(Protocol.HTTP_JSON); return arango; } ``` ```xml org.apache.httpcomponents httpclient 4.5.1 ```