Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> spring injection, init-method 
:(
    Опции темы
irris
Дата 25.3.2015, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 19.5.2007

Репутация: нет
Всего: нет



Всем привет!
Начала изучать spring, столкнулась со странным поведением. Есть класс:
Код

public class Numeric {

    private int num = 0;
    
    

    public Numeric(){}
    
    public void initNum() {
        num = 44;
        System.out.println("init: ");
        printNum();
    }
    
    public void destroyNum() {
        num = 99;
        printNum();
    }
    
    public void add1() {
        num++;
    }
    
    public void printNum() {
        System.out.println(num);
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }
    
}


Добавляю в конфигурационный файл spring 2 бина:
Код

        <bean id="propnum" 
     class="ru.losevapetrova.learning.Numeric">
     <property name="num" value="6"></property>
        
    </bean>
    
    <bean id="unusialnum" 
     class="ru.losevapetrova.learning.Numeric"
     init-method="initNum"
     destroy-method="destroyNum">
        
    </bean>


Вызываю первый:
Код

                ApplicationContext ctx = new ClassPathXmlApplicationContext(
                "spring_conf.xml");
        Numeric performer = (Numeric)ctx.getBean("propnum");
        performer.add1();
        performer.printNum();

Выводится следующее:
init: 
44
7

Т.е. получается, что вызывается и инит метод, который вызываться вроде как и не должен, потому что он в этим бине не объявлен. Почему так происходит?
PM MAIL   Вверх
AntonSaburov
Дата 31.3.2015, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Так по умолчанию Спринг сразу создает все бины, которые объявлены в конфигурации - если не использовать "ленивую" инициализацию. Об этом вы не просите - Спринг создает все бины. Ну и вызывается init. Все правильно.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.