写此小文总结一下平时工作的收获。
入正题,工作涉及到了对 LDAP 的 CRUD 操作,不忍同事用 JLDAP 写的冗长代码(主要并不是 JLDAP 的错。冗长代码问题可以通过代码重构和 Java 反射去解决)。后发现 Spring LDAP 是用来写 LDAP 相关程序的一个不错的选择之一(并没有深入了解别的框架)。直接上代码,希望能给同样需要操作 LDAP 的朋友一些帮助:
LdapTemplate ldapTemplate = buildLdapTemplate();
AndFilter filter = new AndFilter();
filter.and(new EqualsFilter("oacAttrMsisdn", "1"));
filter.and(new EqualsFilter("oacAttrCategory", "UserProfileRule"));
List list = ldapTemplate.search("oacAttrCategory=UserProfileRule",
filter.encode(), new BeanAttributesMapper(new UserProfileRule()));
private static LdapTemplate buildLdapTemplate() throws Exception {
LdapContextSource contextSource = new LdapContextSource();
contextSource.setUrl("ldap://localhost:389");
contextSource.setBase("dc=example,dc=com");
contextSource.setUserDn("cn=Directory Manage");
contextSource.setPassword("ds");
contextSource.afterPropertiesSet();
LdapTemplate ldapTemplate = new LdapTemplate();
ldapTemplate.setContextSource(contextSource);
return ldapTemplate;
}
public class BeanAttributesMapper implements AttributesMapper {
private List<String> skipAttrs;
private Object bean;
public Object mapFromAttributes(Attributes attributes)
throws NamingException {
NamingEnumeration attrEnumeration = attributes.getAll();
while (attrEnumeration.hasMore()) {
Attribute attr = (Attribute) attrEnumeration.next();
System.out.println(attr.getID() + " : " + attr.get());
String ldapAttr = attr.getID().replace("oacAttr", "");
if (!skipAttrs.contains(ldapAttr))
setProperty(bean, attr.getID().replace("oacAttr", ""),
attr.get());
}
return bean;
}
public void setProperty(Object bean, String name, Object value) {
String setterName = "set" + StringUtils.capitalize(name);
Method setter;
try {
setter = bean.getClass().getMethod(setterName, value.getClass());
setter.invoke(bean, value);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
LDAP entry 与 Java Bean 映射的条件是 LDAP attribute name 要和 Java Bean 的属性名之间有映射关系,在这里就是 LDAP 属性名除去前缀就是 Java Bean 中的属性名。Spring LDAP 文档中有专门一章是介绍 Java Bean 与 LDAP 数据间的映射,类似 ORM:http://static.springsource.org/spring-ldap/docs/1.3.x/reference/html/odm.html
BTW. 如果是个人做测试的话,OpenDS 是个不错的 LDAP 服务器的选择,Apache DS 和 OpenLDAP 用起来都不太方便。
分享到:
相关推荐
它构建在Spring框架之上,提供了一种声明式的方式来处理 LDAP 查询,使得开发者能够更容易地集成LDAP服务到他们的应用中。 **安装与配置** 在开始使用Spring LDAP之前,你需要在项目中添加相关的依赖。如果你使用...
Spring LDAP。 官网 Spring LDAP API。 Spring LDAP 开发文档。
Spring LDAP 是一个强大的Java框架,专门设计用于简化与 Lightweight Directory Access Protocol (LDAP) 服务器的交互。在"spring-ldap1.3.1"版本中,这个框架提供了一个灵活且直观的API,允许开发者轻松地执行对...
Practical Spring LDAP is your guide to developing Java-based enterprise applications using the Spring LDAP Framework. This book explains the purpose and fundamental concepts of LDAP before giving a ...
在本文中,我们将深入探讨Spring LDAP 1.3.0版本,包括它的特点、用途、安装过程以及如何在实际项目中使用它。 **Spring LDAP 1.3.0概述** Spring LDAP 是Spring框架的一个扩展,它将Spring的数据抽象概念应用于...
`AttributesMapper`是一个接口,用于将LDAP目录中的属性映射到Java对象。在上面的代码示例中,`UserDaoLdapImpl`类实现了一个匿名的`AttributesMapper`实例,该实例将`Attributes`对象转换为具体的Java类型,例如...
3. **对象映射**:Spring LDAP 提供了 LDAP 对象到 Java 对象的映射,简化了数据处理。 **二、核心概念** 1. **ContextSource**:这是Spring LDAP 的核心组件,用于配置与 LDAP 服务器的连接,并管理多个 LDAP 上...
通过研究提供的`applicationContext.xml`文件和相关的Java代码,我们可以学习到如何在实际项目中有效利用Spring LDAP进行目录服务的集成。 总之,Spring LDAP是一个强大的框架,它使得Java开发者能够轻松地处理LDAP...
在本篇博客“spring ldap操作(一)目录测试环境搭建”中,我们将深入探讨如何在Java应用程序中使用Spring LDAP框架来操作LDAP(轻量级目录访问协议)服务器,以及如何搭建一个测试环境来验证和调试相关功能。Spring...
1. **可视化目录结构**:打开JXplorer并连接到LDAP服务器,可以看到目录服务的树状视图。 2. **搜索和浏览条目**:在界面上输入过滤条件,可以方便地查找特定条目,并查看其属性和子条目。 3. **编辑条目**:选择...
《Practical Spring LDAP》是一本面向中级Java开发者的专业书籍,专注于使用Spring LDAP框架构建企业级应用程序。Spring LDAP是Spring框架的一个扩展,旨在简化Java与 Lightweight Directory Access Protocol (LDAP)...
JAVA中使用LDAP进行用户认证 JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行...
3. **数据转换**: 设计一个转换类,使用反射方法读取ldap条目的属性,并将其赋值给对应的Java对象。 4. **查询操作**: 使用`LdapTemplate`进行查询、增删改查等操作。例如,查找特定用户、更新用户信息等。 5. **...
- **org.springframework.ldap.odm**:对象数据映射(Object Data Mapping)包,实现了将 Java 对象与 LDAP 条目之间的映射。 #### 基本操作 Spring LDAP 提供了丰富的基本操作,包括但不限于: - **搜索和查找**...
Spring LDAP 是一个基于 Spring 框架的 LDAP(轻量级目录访问协议)客户端库,它简化了在 Java 应用程序中与 LDAP 服务器的交互。本示例项目 "spring-ldap demo" 提供了一个关于如何使用 Spring LDAP 进行实际操作的...
在Java开发中,当我们需要与目录服务进行交互,例如用户认证、权限管理等,Spring LDAP和Java Naming and Directory Interface (JNDI)是两个常用的技术。本文将通过一个入门级的例子,详细介绍如何利用Spring LDAP和...
Spring-Ldap 是一个基于 Spring 框架的 LDAP(轻量级目录访问协议)开发工具包,它为在 Java 应用中使用 LDAP 提供了强大的支持。这个项目是为了简化 LDAP 数据的集成,提供了一种与 Spring 框架无缝集成的方式,...
Spring Boot 中使用 LDAP 统一管理用户信息的示例 本篇文章主要介绍了 Spring Boot 中使用 LDAP 来统一管理用户信息的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。下面我们将详细介绍 LDAP 的基础...
在Spring LDAP中,我们通常会使用`LdapTemplate`来进行数据的添加。首先,需要创建一个`LdapEntry`对象,包含要插入的属性和值。然后调用`LdapTemplate`的`add()`方法,传入DN(Distinguished Name)和`LdapEntry`。...