我需要在现有的html" target="_blank">代码库中添加第二个LdapTemplate。LDAP目录完全不同,不共享任何内容。
其他人似乎也有类似的需求:https://github.com/spring-projects/spring-ldap/issues/409.我用Spring LDAP Repository找到了多个LDAP存储库,并添加了第二组LDAP配置条目作为< code>spring.ldap2.和这个附加的配置类:
@Configuration
public class LdapConfig {
@Autowired
private Environment environment;
@Bean(name = "ldapProperties2")
@ConfigurationProperties(prefix = "spring.ldap2")
public LdapProperties ldapProperties() {
return new LdapProperties();
}
@Bean(name = "contextSource2")
public LdapContextSource contextSourceTarget(@Qualifier("ldapProperties2") LdapProperties ldapProperties) {
LdapContextSource source = new LdapContextSource();
source.setUserDn(ldapProperties.getUsername());
source.setPassword(ldapProperties.getPassword());
source.setBase(ldapProperties.getBase());
source.setUrls(ldapProperties.determineUrls(this.environment));
source.setBaseEnvironmentProperties(
Collections.<String, Object>unmodifiableMap(ldapProperties.getBaseEnvironment()));
return source;
}
@Bean(name = "ldapTemplate2")
public LdapTemplate ldapTemplate(@Qualifier("contextSource2") LdapContextSource contextSource) {
return new LdapTemplate(contextSource);
}
}
启动投诉:
Parameter 0 of constructor in org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration required a single bean, but 2 were found:
- ldapProperties2: defined by method 'ldapProperties' in class path resource [my/company/foo/LdapConfig.class]
- spring.ldap-org.springframework.boot.autoconfigure.ldap.LdapProperties: defined in null
我试图添加@Primary
但这也可以添加到我的类中,并且所有现有代码都已使用“旧”主模板。不幸的是,没有@Second
。
编辑
我做了更多尝试:
@Autowired
@Qualifier("ldapTemplate1")
LdapTemplate ad;
@Autowired
@Qualifier("ldapTemplate2")
LdapTemplate gd;
第一颗豆:
@Bean(name="ldapTemplate1")
public LdapTemplate ldapTemplate(@Qualifier("contextSource1") LdapContextSource contextSource) {
return new LdapTemplate(contextSource);
}
第二颗豆子:
@Bean(name = "ldapTemplate2")
public LdapTemplate ldapTemplate(@Qualifier("contextSource2") LdapContextSource contextSource) {
return new LdapTemplate(contextSource);
}
然后,Spring Boot抱怨道:
Field ad in com.example... required a bean of type 'org.springframework.ldap.core.LdapTemplate' that could not be found.
- Bean method 'ldapTemplate' in 'LdapDataAutoConfiguration' not loaded because @ConditionalOnMissingBean (types: org.springframework.ldap.core.LdapOperations; SearchStrategy: all) found beans of type 'org.springframework.ldap.core.LdapOperations' ldapTemplate2
- User-defined bean method 'ldapTemplate' in 'LdapConfiguration2'
即使我将其中的两个重命名为LdapTemplate
Spring Boot也无法自动连线。
如何自动配置两个独立的 Ldap 模板
?我使用的是Spring靴 2.0.5
这是我在 Tomcat 8.5 上部署的具有Spring 4 和Spring LDAP 的应用程序中使用的方法。
beans.xml
:
<beans:bean id="contextSource-one"
class="org.springframework.ldap.pool2.factory.PooledContextSource">
<beans:constructor-arg>
<beans:bean class="org.springframework.ldap.pool2.factory.PoolConfig"
p:testOnBorrow="true" p:minEvictableIdleTimeMillis="300000" p:maxWaitMillis="5000" />
</beans:constructor-arg>
<beans:property name="contextSource">
<beans:bean
class="...ContextSource"...>
</beans:bean>
</beans:property>
<beans:property name="dirContextValidator">
<beans:bean
class="org.springframework.ldap.pool2.validation.DefaultDirContextValidator" />
</beans:property>
</beans:bean>
<beans:bean id="contextSource-two"
class="org.springframework.ldap.pool2.factory.PooledContextSource">
<beans:constructor-arg>
<beans:bean class="org.springframework.ldap.pool2.factory.PoolConfig"
p:testOnBorrow="true" p:minEvictableIdleTimeMillis="300000" p:maxWaitMillis="5000" />
</beans:constructor-arg>
<beans:property name="contextSource">
<beans:bean
class="...ContextSource"...>
</beans:bean>
</beans:property>
<beans:property name="dirContextValidator">
<beans:bean
class="org.springframework.ldap.pool2.validation.DefaultDirContextValidator" />
</beans:property>
</beans:bean>
适应您的需求和/或转换为Java配置。
这是依赖类,几乎像你的:
public class MyClass {
private List<LdapTemplate> ldapTemplates;
@Autowired
public MyClass(List<ContextSource> contextSources) {
this.ldapTemplates = new LinkedList<>();
for (ContextSource cs : contextSources)
this.ldapTemplates.add(new LdapTemplate(cs));
}
}
我正在使用Spring Boot创建一个独立的jar,使用Export命令和Runnable jar,并试图在命令提示符下运行jar,但它会抛出以下错误,同一个应用程序正在Eclipse中运行。我不能使用maven,我也没有在我的应用程序中使用spring-boot-thymeleaf。即使在添加了spring-boot-autoconfigurator-thymeleaf jar之后,我也会得到
我有一个需要执行LDAP查询的Spring启动应用程序。我正在尝试从Spring启动文档中获取以下建议: Internet上已经发布了许多使用XML配置的Spring配置示例。如果可能,请始终尝试使用等效的基于Java的配置。 在Spring XML配置文件中,我会使用: 我如何使用基于Java的配置来配置它?我需要能够更改ldap的URL、base、用户名和密码属性:上下文源,而无需代码重建。
我正在尝试使用spring数据构建一个LdapTemplate对象。 我想知道的是实例化ldap模板对象的正确方法。因为当我执行查找时,它会抛出NPE。 我试图在CDI上下文中使用LDAP Spring而根本不使用Spring。如果您有指针,那就太好了。Spring LDAP是否依赖于Spring?
我正在使用Intellij IDEA 14.1,并试图调试最基本的独立Spring Boot 1.2.5应用程序。有人能告诉我怎么做吗? 我读过http://docs.spring.io/autorepo/docs/spring-boot/1.2.5.RELEASE/maven-plugin/usage.html但并没有成功地使其发挥作用。最简单的方法是禁用Spring Boot在调试时使用的分叉
我第一次使用Spring Cloud Config Server,并有一个基本的查询。 SpringConfigServer将配置外部化到一个单独的git存储库中。 为什么我要为配置创建一个单独的存储库? 在一个repo中使用包含所有应用程序代码和配置的mono存储库,不比只为配置创建一个单独的存储库更可取吗。 我们在同一个存储库中有多个微服务。配置服务器不应该是存在于其他应用程序代码所在的同一存
我刚开始使用Xamarin和VisualStudio2017在C#中为Android开发。与Windows生态系统完全不同的范例…Target是一个商业应用程序,将有特定的受众,但在我深入了解之前,我只是试图学习绳子,理解概念和程序… 因此,我从最简单的app开始,使用空白模板。这将创建一个项目,其中包含一个活动(mainactivity.cs)、两个资源(resources\layout\mai