Spring singleton, созданный несколько раз

У меня есть bean-компонент, определенный в моем веб-приложении Spring, и я ожидаю, что у меня будет только один экземпляр этого bean-компонента, вот мое определение bean-компонента:


В конструкторе AccessControl я присваиваю объекту идентификатор, что-то вот так:

public class AccessControl {
   private long id = 0;
   public AccessControl() {
        id = System.currentTimeMillis();
   }

   public long getAccessControlId() {
        return id;
   }
}

В другом классе я пытаюсь получить экземпляр AccessControl, примерно так:

            ApplicationContext ctx =
                     new ClassPathXmlApplicationContext("acbean.xml");

            AccessControl ac = (AccessControl) ctx.getBean("accessControl");
            LOGGER_.info("AccessControl Identifier : " + ac.getAccessControlId());

Я ожидаю, что значение «id» будет таким же, потому что значение «id» установлено в конструкторе и конструкторе не должны вызываться снова и снова, но именно это и происходит. Фактически, я добавил в конструктор оператор журнала, и каждый раз создается новый объект.

Я прочитал: http://www.digizenstudio.com/blog/2006/09/14/a-spring-singleton-is-not-a-singleton/ но я не думаю, что имею дело с одним и тем же классом, определенным дважды с двумя разными идентификаторами bean-компонентов, и контекст приложения одинаков.

Может ли кто-нибудь рассказать, что не так с тем, как я определил компонент?

Я также экспериментировал с singleton = "true" и scope = "singleton", но они не делают никаких различий.

Спасибо.

6
задан Tomasz Nurkiewicz 27 October 2011 в 19:53
поделиться