2017.4.10 spring-ldap官方文档学习

官网:http://www.springframework.org/ldap

官方文档及例子(重要):http://docs.spring.io/spring-ldap/docs/2.1.0.RELEASE/reference/

JAVA文档(重要):http://docs.spring.io/spring-ldap/docs/2.1.0.RELEASE/apidocs/

GitHub(大量例子):https://github.com/spring-projects/spring-ldap

Spring LDAP Reference

2.基本使用

2.1 使用AttributesMapper进行search和lookup

(1)通过search返回一个属性值

 1 import static org.springframework.ldap.query.LdapQueryBuilder.query;
 2
 3 public class PersonRepoImpl implements PersonRepo{
 4     private LdapTemplate ldapTemplate;
 5
 6     public void setLdapTemplate(LdapTemplate ldapTemplate){
 7         this.ldapTemplate = ldapTemplate;
 8     }
 9
10     public List<String> getAllPersonNames(){
11         return ldapTemplate.search({
12             query().where("objectclass").is("person"),
13             new AttributeMapper<String>(){
14                 public String mapFromAttributes(Attribute attrs)throws NamingException{
15                         return (String) attrs.get("cn").get();
16                     }
17                 }
18             }
19         });
20     }
21 }

(2)通过search返回一个Person对象

 1 package com.example.repo;
 2 import static org.springframework.ldap.query.LdapQueryBuilder.query;
 3
 4 public class PersonRepoImpl implements PersonRepo {
 5    private LdapTemplate ldapTemplate;
 6    ...
 7    private class PersonAttributesMapper implements AttributesMapper<Person> {
 8       public Person mapFromAttributes(Attributes attrs) throws NamingException {
 9          Person person = new Person();
10          person.setFullName((String)attrs.get("cn").get());
11          person.setLastName((String)attrs.get("sn").get());
12          person.setDescription((String)attrs.get("description").get());
13          return person;
14       }
15    }
16
17    public List<Person> getAllPersons() {
18       return ldapTemplate.search(query()
19           .where("objectclass").is("person"), new PersonAttributesMapper());
20    }
21 }

(3)通过lookup返回一个Person对象

在ldap中,有两个"查询"概念,search和lookup。search是ldaptemplate对每一个entry进行查询,lookup是通过DN直接找到某个条目。

"Entries in LDAP are uniquely identified by their distinguished name (DN). If you have the DN of an entry, you can retrieve(找回) the entry directly without searching for it. This is called a lookup in Java LDAP."

在下面的lookup代码中,ldap会跳过为AttributesMapper查找属性。

1 package com.example.repo;
2
3 public class PersonRepoImpl implements PersonRepo {
4    private LdapTemplate ldapTemplate;
5    ...
6    public Person findPerson(String dn) {
7       return ldapTemplate.lookup(dn, new PersonAttributesMapper());
8    }
9 }

2.2 创建LDAP Queries

ldap的search 包含许多参数,比如:

1 Base LDAP path 基本路径(search应该从LDAP树的哪里开始)
2 Search scope 查询范围(search应该进行到LDAP树的哪一层)
3 returned attributes要返回的属性
4 Search filter 查询过滤器

spring-ldap为我们提供了LdapQueryBuilder来创建LDAP Queries。

假设现在需要执行一个查询:base DN为"dc=261consulting,dc=com",返回的属性为

时间: 2024-10-03 19:40:22

2017.4.10 spring-ldap官方文档学习的相关文章

Spring 4 官方文档学习(十二)View技术

1.介绍 Spring 有很多优越的地方,其中一个就是将view技术与MVC框架的其他部分相隔离.例如,在JSP存在的情况下使用Groovy Markup Templates 还是使用Thymeleaf,仅仅是一个配置问题. 本章覆盖了主要的view技术,嗯嗯,可以与Spring结合的那些,并简明的说明了如何增加新的view技术. 本章假定你已经熟悉了Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图 -- 它覆盖了views如何耦合到MVC框架

Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图

接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolvers,可以让你在浏览器中render model,而不必绑定到某种特定的view技术上.开箱即用,例如,Spring可以让你使用JSPs.Velocity目标和XSLT views.See Chapter 23, View technologies for a discussion of how

Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion

前言 在Spring Framework官方文档中,这三者是放到一起讲的,但没有解释为什么放到一起.大概是默认了读者都是有相关经验的人,但事实并非如此,例如我.好在闷着头看了一遍,又查资料又敲代码,总算明白了. 其实说穿了一文不值,我们用一个例子来解释: 假定,现有一个app,功能是接收你输入的生日,然后显示你的年龄.看起来app只要用当前日期减去你输入的日期就是年龄,应该很简单对吧?可惜事实不是这样的. 这里面有三个问题: 问题一:我们输入的永远是字符串,字符串需要转成日期格式才能被我们的ap

Spring 4 官方文档学习(十一)Web MVC 框架之HTTP caching support

一个良好的HTTP缓存策略可以显著地增进web应用的性能和其客户端的体验.主要使用"Cache-Control" HTTP response header来完成,配合conditional headers例如"Last-Modified"和"ETag". "Cache-Control" HTTP response header 会建议私有缓存(如浏览器)和公开缓存(如代理)如何缓存HTTP response以供将来复用. &q

Spring JMS 官方文档学习

最后部分的XML懒得写了,因为个人更倾向于JavaConfig形式. 为知笔记版本见这里,带格式~ 做了一个小demo,放到码云上了,有兴趣的点我. 说明:需要先了解下JMS的基础知识. 1.介绍 Spring 提供了一个JMS集成框架,简化了JMS API的使用,类似于Spring提供的JDBC API集成. JMS可以粗略地划分成两大功能区域,就是消息的生产(production)和消费(consumption).JmsTemplate 用于消息的生产和同步的消息接收.对于异步消息接收,类似

Spring 4 官方文档学习(十三)集成其他web框架

重点是通用配置,非常建议看一下!有助于理解Spring的ApplicationContext与Servlet Container的关系! 1.介绍 Spring Web Flow SWF目标是成为web应用页面flow管理的最佳解决方案. SWF集成了现有的框架,如Spring MVC 和 JSF,在Servlet和Portlet环境中.如果你有一个(或多个)业务处理,且 受益于会话模型而非纯请求模型,那SWF可能就是解决方案. SWF允许捕获逻辑页面flows,并将其作为自包容的模块 -- 可

Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC

在前面的文档中讲解了Spring MVC的特殊beans,以及DispatcherServlet使用的默认实现.在本部分,你会学习两种额外的方式来配置Spring MVC.分别是:MVC Java config 和  MVC XML namespace. 原文: Section 22.2.1, "Special Bean Types In the WebApplicationContext" and Section 22.2.2, "Default DispatcherSer

Spring 4 官方文档学习(十一)Web MVC 框架之编码式Servlet容器初始化

在Servlet 3.0+ 环境中,你可以编码式配置Servlet容器,用来代替或者结合 web.xml文件.下面是注册DispatcherServlet : import org.springframework.web.WebApplicationInitializer; public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(

Spring 4 官方文档学习 Spring与Java EE技术的集成

本部分覆盖了一下内容: Chapter 28, Remoting and web services using Spring -- 使用Spring进行远程和web服务 Chapter 29, Enterprise JavaBeans (EJB) integration -- EJB集成 Chapter 30, JMS (Java Message Service) -- JMS (Java 消息服务) Chapter 31, JMX Chapter 32, JCA CCI Chapter 33,

Spring 4 官方文档学习(十一)Web MVC 框架之约定优于配置

当返回一个ModelAndView时,可以使用其addObject(Object obj)方法,此时的约定是: An x.y.User instance added will have the name user generated. An x.y.Registration instance added will have the name registration generated. An x.y.Foo instance added will have the name foo gener