我在SpringBoot App中使用下面提到的属性,在application.yml
文件中使LDAP代码在我的本地计算机上运行。
spring:
ldap:
# Use this embedded configuration for local ldap testing
embedded:
base-dn: o=localcompany,c=US
credential:
username: uid=admin
password: secret
ldif: classpath:schemas.ldif
port: 12345
validation:
enabled: false
# Use this below configuration for Ford ldap
# urls: ldaps://mmm.mmm.com:754
# base-dn: o=****,c=US
# username:
# password: {your password goes here}
我希望同时拥有我的嵌入式配置和实际配置存在于我的应用程序中,因此它可以在本地以及我的云环境中运行。但是,即使在云环境中,在我的yml文件中使用嵌入式属性也会覆盖实际属性。有没有办法同时拥有这两个属性,然后根据环境,连接LDAPTemplate
答案 0 :(得分:1)
我使用@profile
注释配置了我的LDAPTemplate,这可以区分本地和服务器环境并实现我上面提到的。以下是我的配置。对于本地环境,具有嵌入属性足以使LDAPTemplate
正确连接
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.support.LdapContextSource;
@Configuration
@Profile("cloud")
public class LDAPConfiguration {
@Value("${ldap.url}")
private String ldapUrl;
@Value("${ldap.base}")
private String ldapBase;
@Value("${ldap.username}")
private String ldapUser;
@Value("${ldap.password}")
private String ldapPassword;
@Bean
public LdapTemplate configureLdapTemplateForCloud() {
return new LdapTemplate(contextSource()) ;
}
private LdapContextSource contextSource() {
LdapContextSource ldapContextSource = new LdapContextSource();
ldapContextSource.setUrl(ldapUrl);
ldapContextSource.setBase(ldapBase);
ldapContextSource.setUserDn(ldapUser);
ldapContextSource.setPassword(ldapPassword);
ldapContextSource.afterPropertiesSet();
return ldapContextSource;
}
}
现在,当我在本地运行时,Spring Boot将使用我的嵌入式LDAP,但在云配置文件中,它将执行实际的LDAP服务器。
由于 阿伦