diff --git a/spring-boot-samples/pom.xml b/spring-boot-samples/pom.xml
index 489503b52d..d701b33f25 100644
--- a/spring-boot-samples/pom.xml
+++ b/spring-boot-samples/pom.xml
@@ -38,6 +38,7 @@
spring-boot-sample-data-elasticsearch
spring-boot-sample-data-gemfire
spring-boot-sample-data-jpa
+ spring-boot-sample-data-ldap
spring-boot-sample-data-mongodb
spring-boot-sample-data-neo4j
spring-boot-sample-data-redis
diff --git a/spring-boot-samples/spring-boot-sample-data-ldap/pom.xml b/spring-boot-samples/spring-boot-sample-data-ldap/pom.xml
new file mode 100644
index 0000000000..af2c829d91
--- /dev/null
+++ b/spring-boot-samples/spring-boot-sample-data-ldap/pom.xml
@@ -0,0 +1,50 @@
+
+
+ 4.0.0
+
+
+ org.springframework.boot
+ spring-boot-samples
+ 1.5.0.BUILD-SNAPSHOT
+
+ spring-boot-sample-data-ldap
+ Spring Boot Data LDAP Sample
+ Spring Boot Data LDAP Sample
+ http://projects.spring.io/spring-boot/
+
+ Pivotal Software, Inc.
+ http://www.spring.io
+
+
+ ${basedir}/../..
+
+
+
+
+ com.unboundid
+ unboundid-ldapsdk
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-data-ldap
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/spring-boot-samples/spring-boot-sample-data-ldap/src/main/java/sample/data/ldap/Person.java b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/java/sample/data/ldap/Person.java
new file mode 100644
index 0000000000..93ef7b3a92
--- /dev/null
+++ b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/java/sample/data/ldap/Person.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2012-2017 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sample.data.ldap;
+
+import javax.naming.Name;
+
+import org.springframework.ldap.odm.annotations.Attribute;
+import org.springframework.ldap.odm.annotations.Entry;
+import org.springframework.ldap.odm.annotations.Id;
+
+@Entry(objectClasses = { "person", "top" })
+public class Person {
+
+ @Id
+ private Name dn;
+
+ @Attribute(name = "telephoneNumber")
+ private String phone;
+
+ @Override
+ public String toString() {
+ return String.format("Customer[dn=%s, phone='%s']", this.dn, this.phone);
+ }
+
+}
diff --git a/spring-boot-samples/spring-boot-sample-data-ldap/src/main/java/sample/data/ldap/PersonRepository.java b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/java/sample/data/ldap/PersonRepository.java
new file mode 100644
index 0000000000..526f379d96
--- /dev/null
+++ b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/java/sample/data/ldap/PersonRepository.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2012-2017 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sample.data.ldap;
+
+import org.springframework.data.ldap.repository.LdapRepository;
+
+public interface PersonRepository extends LdapRepository {
+
+ Person findByPhone(String phone);
+
+}
diff --git a/spring-boot-samples/spring-boot-sample-data-ldap/src/main/java/sample/data/ldap/SampleLdapApplication.java b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/java/sample/data/ldap/SampleLdapApplication.java
new file mode 100644
index 0000000000..294f08954f
--- /dev/null
+++ b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/java/sample/data/ldap/SampleLdapApplication.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2012-2017 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sample.data.ldap;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class SampleLdapApplication implements CommandLineRunner {
+
+ private final PersonRepository repository;
+
+ public SampleLdapApplication(PersonRepository repository) {
+ this.repository = repository;
+ }
+
+ @Override
+ public void run(String... args) throws Exception {
+
+ // fetch all people
+ System.out.println("People found with findAll():");
+ System.out.println("-------------------------------");
+ for (Person person : this.repository.findAll()) {
+ System.out.println(person);
+ }
+ System.out.println();
+
+ // fetch an individual person
+ System.out.println("Person found with findByPhone('+46 555-123456'):");
+ System.out.println("--------------------------------");
+ System.out.println(this.repository.findByPhone("+46 555-123456"));
+ //
+ // System.out.println("Customers found with findByLastName('Smith'):");
+ // System.out.println("--------------------------------");
+ // for (Customer customer : this.repository.findByLastName("Smith")) {
+ // System.out.println(customer);
+ // }
+ }
+
+ public static void main(String[] args) throws Exception {
+ SpringApplication.run(SampleLdapApplication.class, args).close();
+ }
+
+}
diff --git a/spring-boot-samples/spring-boot-sample-data-ldap/src/main/resources/application.properties b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/resources/application.properties
new file mode 100644
index 0000000000..b574703f0f
--- /dev/null
+++ b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/resources/application.properties
@@ -0,0 +1 @@
+spring.ldap.embedded.base-dn=dc=spring,dc=org
diff --git a/spring-boot-samples/spring-boot-sample-data-ldap/src/main/resources/schema.ldif b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/resources/schema.ldif
new file mode 100644
index 0000000000..bb97e4a3c5
--- /dev/null
+++ b/spring-boot-samples/spring-boot-sample-data-ldap/src/main/resources/schema.ldif
@@ -0,0 +1,62 @@
+dn: dc=spring,dc=org
+objectclass: top
+objectclass: domain
+objectclass: extensibleObject
+dc: spring
+
+dn: ou=groups,dc=spring,dc=org
+objectclass: top
+objectclass: organizationalUnit
+ou: groups
+
+dn: cn=ROLE_USER,ou=groups,dc=spring,dc=org
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: ROLE_USER
+uniqueMember: cn=Some Person,ou=company1,c=Sweden,dc=spring,dc=org
+uniqueMember: cn=Some Person2,ou=company1,c=Sweden,dc=spring,dc=org
+uniqueMember: cn=Some Person,ou=company1,c=Sweden,dc=spring,dc=org
+uniqueMember: cn=Some Person3,ou=company1,c=Sweden,dc=spring,dc=org
+
+dn: cn=ROLE_ADMIN,ou=groups,dc=spring,dc=org
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: ROLE_ADMIN
+uniqueMember: cn=Some Person2,ou=company1,c=Sweden,dc=spring,dc=org
+
+dn: c=Sweden,dc=spring,dc=org
+objectclass: top
+objectclass: country
+c: Sweden
+description: The country of Sweden
+
+dn: ou=company1,c=Sweden,dc=spring,dc=org
+objectclass: top
+objectclass: organizationalUnit
+ou: company1
+description: First company in Sweden
+
+dn: cn=Alice Smith,ou=company1,c=Sweden,dc=spring,dc=org
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+uid: alice.smith
+userPassword: password
+cn: Alice Smith
+sn: Alice Smith
+description: Sweden, Company1, Alice Smith
+telephoneNumber: +46 555-123456
+
+dn: cn=Bob Smith,ou=company1,c=Sweden,dc=spring,dc=org
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+uid: bob.smith
+userPassword: password
+cn: Bob Smith
+sn: Bob Smith
+description: Sweden, Company1, Some Person2
+telephoneNumber: +46 555-654321
+
diff --git a/spring-boot-samples/spring-boot-sample-data-ldap/src/test/java/sample/data/ldap/SampleLdapApplicationTests.java b/spring-boot-samples/spring-boot-sample-data-ldap/src/test/java/sample/data/ldap/SampleLdapApplicationTests.java
new file mode 100644
index 0000000000..4ab05c0670
--- /dev/null
+++ b/spring-boot-samples/spring-boot-sample-data-ldap/src/test/java/sample/data/ldap/SampleLdapApplicationTests.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2012-2017 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sample.data.ldap;
+
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.rule.OutputCapture;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Tests for {@link SampleLdapApplication}.
+ *
+ * @author Phillip Webb
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SampleLdapApplicationTests {
+
+ @ClassRule
+ public static OutputCapture outputCapture = new OutputCapture();
+
+ @Test
+ public void testDefaultSettings() throws Exception {
+ String output = outputCapture.toString();
+ assertThat(output).contains("cn=Alice Smith");
+ }
+
+}