对于Spring Boot应用程序,我LdapTemplate
使用 批注 成功配置了Spring
,其中包括application.properties中LdapContextSource
带有@Value
s
的依赖项。(糟糕!我找不到示例,所以也许这会对其他人有所帮助。)
片段(如下所示)设置了上下文源,将其注入LdapTemplate
,然后自动将其连接到我的DirectoryService中。
有没有更好/更干净的方法来ContextSource
在Spring Boot应用中进行设置?
application.properties(在类路径上):
ldap.url=ldap://server.domain.com:389
ldap.base:OU=Employees,OU=Users,DC=domain,DC=com
ldap.username:CN=myuserid,OU=employees,OU=Users,DC=domain,DC=com
ldap.password:secretthingy
MyLdapContextSource.java:
@Component
public class MyLdapContextSource extends LdapContextSource implements ContextSource {
@Value("${ldap.url}")
@Override
public void setUrl(String url) { super.setUrl(url); }
@Value("${ldap.base}")
@Override
public void setBase(String base) {super.setBase(base); }
@Value("${ldap.username}")
@Override
public void setUserDn(String userDn) {super.setUserDn(userDn); }
@Value("${ldap.password}")
@Override
public void setPassword(String password) { super.setPassword(password); }
}
MyLdapTemplate.java:
@Component
public class MyLdapTemplate extends LdapTemplate {
@Autowired
public MyLdapTemplate(ContextSource contextSource) { super(contextSource); }
}
DirectoryService.java:
@Service
public class DirectoryService {
private final LdapTemplate ldapTemplate;
@Value("${ldap.base}")
private String BASE_DN;
@Autowired
public DirectoryService(LdapTemplate ldapTemplate) { this.ldapTemplate = ldapTemplate; }
public Person lookupPerson(String username) {
return (Person) ldapTemplate.lookup("cn=" + username, new PersonAttributesMapper());
}
public List<Person> searchDirectory(String searchterm) {
SearchControls searchControls = new SearchControls();
searchControls.setCountLimit(25);
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
List<Person> people = (List<Person>) ldapTemplate.search(
BASE_DN, "cn=" + searchterm, searchControls, new PersonAttributesMapper());
return people;
}
}
为什么是所有子类?只需使用配置来配置bean。XML或Java Config。
@Configuration
public class LdapConfiguration {
@Autowired
Environment env;
@Bean
public LdapContextSource contextSource () {
LdapContextSource contextSource= new LdapContextSource();
contextSource.setUrl(env.getRequiredProperty("ldap.url"));
contextSource.setBase(env.getRequiredProperty("ldap.base"));
contextSource.setUserDn(env.getRequiredProperty("ldap.user"));
contextSource.setPassword(env.getRequiredProperty("ldap.password"));
return contextSource;
}
@Bean
public LdapTemplate ldapTemplate() {
return new LdapTemplate(contextSource());
}
}
您DirectoryService
可以保持与LdapTemplate
自动接线相同。
一般的经验法则是,您不想扩展基础结构Bean(如DataSource
或LdapTemplate
),而是显式配置它们。与您的应用程序Bean(服务,存储库等)相反。
对于Spring Boot应用程序,我使用注释成功地配置了Spring,包括应用程序中带有s的依赖项。财产。(呜呜!我找不到一个例子,所以这可能会帮助其他人。) 下面的代码片段设置了上下文源,将其插入到中,并将其自动连接到my DirectoryService中。 有没有更好/更干净的方法来设置在Spring Boot应用程序中? 应用属性(在类路径上): MyLdapContextSource.
我已经从SO问题中得到了在没有XML配置的情况下设置LdapContextSource和LdapTemplate的答案。通过注释而不是XML配置SpringLdap模板的最佳实践? 下面xml的注解方式应该是什么——基于接口自动创建存储库bean?
问题内容: 我已经使用Hibernate几年了,但仅将其与注释一起使用,并在代码中设置了连接参数。 我是否通过不使用XML文件来“缺少某些东西”?是否只有XML提供重要的功能?是否存在使用XML有意义的情况或模式? 问题答案: 我认为可以肯定地说您不会错过任何事情。 如果XML中有任何功能无法在属性中表示(我相信有一些罕见的情况),那么您仍然可以选择使用[RawXml]并将XML写入属性中。因此,
本文档旨在汇总和强调用户指南、快速开始文档和示例中的最佳实践。该文档会很活跃并持续更新中。如果你觉得很有用的最佳实践但是本文档中没有包含,欢迎给我们提Pull Request。 通用配置建议 定义配置文件的时候,指定最新的稳定API版本(目前是V1)。 在配置文件push到集群之前应该保存在版本控制系统中。这样当需要的时候能够快速回滚,必要的时候也可以快速的创建集群。 使用YAML格式而不是JSO
本文向大家介绍Spring Boot之AOP配自定义注解的最佳实践过程,包括了Spring Boot之AOP配自定义注解的最佳实践过程的使用技巧和注意事项,需要的朋友参考一下 前言 AOP(Aspect Oriented Programming),即面向切面编程,是Spring框架的大杀器之一。 首先,我声明下,我不是来系统介绍什么是AOP,更不是照本宣科讲解什么是连接点、切面、通知和切入点这些让
问题内容: 用PHP完成这项工作时,可能会遇到这种问题: 问题是,如果包含双引号,应将其更改为 但这还不是全部故事: 在这种情况下,我们需要将单引号更改为,而将双引号保持不变。 那么,我们如何以一般财产的方式来做呢? 问题答案: 您始终希望对HTML属性中的内容进行HTML编码,您可以使用以下方法: 您可能需要将第二个参数()设置为。 唯一的潜在风险是可能已经被编码,因此您 可能 需要将最后一个参