我有一个需要执行LDAP查询的Spring启动应用程序。我正在尝试从Spring启动文档中获取以下建议:
“许多Spring配置示例已发布在 使用XML配置的Internet。总是尝试使用等效的 如果可能的话,基于Java的配置。“
在Spring XML配置文件中,我会使用:
<ldap:context-source
url="ldap://localhost:389"
base="cn=Users,dc=test,dc=local"
username="cn=testUser"
password="testPass" />
<ldap:ldap-template id="ldapTemplate" />
<bean id="personRepo" class="com.llpf.ldap.PersonRepoImpl">
<property name="ldapTemplate" ref="ldapTemplate" />
</bean>
如何使用基于Java的配置进行配置?我需要能够在没有代码重建的情况下更改ldap:context-source的URL,base,username和password属性。
答案 0 :(得分:19)
<ldap:context-source>
XML标记生成LdapContextSource
bean,<ldap:ldap-template>
XML标记生成LdapTemplate
bean,这样您需要在Java中执行的操作配置:
@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
@ConfigurationProperties(prefix="ldap.contextSource")
public LdapContextSource contextSource() {
LdapContextSource contextSource = new LdapContextSource();
return contextSource;
}
@Bean
public LdapTemplate ldapTemplate(ContextSource contextSource) {
return new LdapTemplate(contextSource);
}
@Bean
public PersonRepoImpl personRepo(LdapTemplate ldapTemplate) {
PersonRepoImpl personRepo = new PersonRepoImpl();
personRepo.setLdapTemplate(ldapTemplate);
return personRepo;
}
}
为了让您在不重建代码的情况下更改配置,我使用了Spring Boot的@ConfigurationProperties
。这将在您的应用程序环境中查找前缀为ldap.contextSource
的属性,然后通过调用匹配的setter方法将它们应用于LdapContextSource
bean。要在问题中应用配置,您可以使用包含四个属性的application.properties
文件:
ldap.contextSource.url=ldap://localhost:389
ldap.contextSource.base=cn=Users,dc=test,dc=local
ldap.contextSource.userDn=cn=testUser
ldap.contextSource.password=testPass
答案 1 :(得分:-2)
在XML中,您可以使用:
<bean id="ldapContextSource"
class="org.springframework.ldap.core.support.LdapContextSource">
<property name="url" value="<URL>" />
<property name="base" value="<BASE>" />
<property name="userDn" value="CN=Bla,OU=com" />
<property name="password" value="<PASS>" />
<property name="referral" value="follow" />
</bean>
<bean id="ldapTemplate"
class="org.springframework.ldap.core.LdapTemplate"
depends-on="ldapContextSource">
<constructor-arg index="0" ref="ldapContextSource" />
<property name="ignorePartialResultException" value="true"/>
</bean>
<bean id="personRepo" class="com.llpf.ldap.PersonRepoImpl">
<property name="ldapTemplate" ref="ldapTemplate" />
</bean>
我希望它有所帮助!