Spring不加载LDAP-XML配置文件

时间:2014-11-11 14:08:40

标签: java xml spring

我有一个原型spring应用程序,可以使用spring-security和LDAP。该应用程序适用于内部LDAP服务器。但是当我想用xml-config定义一个单独的连接时,它不起作用。更具体:应该由xml-config实例化的LdapTemplate保留一个空对象。这是代码:

    public class UserRepo {

    @Autowired
    private LdapTemplate ldapTemplate;  //stays null
    public static final String BASE_DN = "dc=springframework,dc=org";

    //this works, but is not desired:
    public UserRepo() {
//      final GenericXmlApplicationContext appContext = new GenericXmlApplicationContext("classpath:ldap.xml");
//      appContext.refresh();
//      ldapTemplate = (LdapTemplate)appContext.getBean(LdapTemplate.class);
//      LdapContextSource lcs = new LdapContextSource();
//      lcs.setUrl("ldap://127.0.0.1:389/");
//      lcs.setUserDn(BASE_DN);
//      lcs.setDirObjectFactory(DefaultDirObjectFactory.class);
//      lcs.setAnonymousReadOnly(true);
//      lcs.afterPropertiesSet();
//      ldapTemplate = new LdapTemplate(lcs);
    }

我的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ldap="http://www.springframework.org/schema/ldap"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/ldap http://www.springframework.org/schema/ldap/spring-ldap.xsd">

   <ldap:context-source
          id="contextSource"
          url="ldap://localhost:389"
          base="dc=example,dc=com"
          username="cn=Manager"
          password="secret" />

   <ldap:ldap-template id="ldapTemplate" />

   <bean id="userRepo" class="user.UserRepo">
      <property name="ldapTemplate" ref="ldapTemplate" />
   </bean>

</beans>

我已将ldap.xml一次放在src-dir中,另一次放在ressource-dir中,两者都不起作用。

我希望你能告诉我我做错了什么。

1 个答案:

答案 0 :(得分:0)

将@Component注释添加到UserRepo类和正确的注释配置(或组件扫描元素,如果需要)。由于您的注释掉的代码可以正常工作,因此您可以成功创建LdapTemplate bean,并因为使用GenericXmlApplicationContext而注入。要使用注释对其进行测试,您需要使用AnnotationConfigApplicationContext。