Задать вопрос
Ответы пользователя по тегу Java
  • Spring Custom Events | почему работает ApplicationListener, но не работает @EventListener?

    NeoIsNotTheOne
    @NeoIsNotTheOne Автор вопроса
    В главном коде поменял стартер всей движухи и стало робить:
    Вместо этого
    @PostConstruct
      void init() {
        service1.publish1();
      }

    это
    @EventListener
    	public void onContextStart(ContextRefreshedEvent event) {
    		service1.publish1();
    	}


    Если кто-то из опытных объяснит почему так, буду признателен, но возможно события публиковались до того, как регистратор слушателей успевал зарегистрировать наш слушатель, но это только мои догадки.
    Ответ написан
    Комментировать
  • Spring. Почему не происходит инъекция зависимости с помощью @autowired?

    NeoIsNotTheOne
    @NeoIsNotTheOne Автор вопроса
    Ответ такой, когда конструктор сервиса 2 вызывает сервис 1, его ещё не существует, так как Spring "вживляет" зависимость, после его создания, и закономерно возникает NullPointerException.
    Получается, что если использовать зависимость в конструкторе, то важно чтобы "вживлялась" эта зависимость через конструктор.
    ackage a.b.c;
    
    import a.b.MyService1;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Service;
    
    @Service
    @Scope("prototype")
    public class MyService2 {
    
        public MyService2(MyService1 myService1) {
            myService1.doSmth("ewg");
        }
    
    
    }


    Или так тоже будет работать:
    package a.b.c;
    
    import a.b.MyService1;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Service;
    
    @Service
    @Scope("prototype")
    public class MyService2 {
    
        @Autowired
        private MyService1 myService1;
    
        public void doSmth() {
            myService1.doSmth("");
        }
    }
    Ответ написан
    Комментировать