Как использовать @Autowired в подклассе для поля, определенного в базовом классе? - PullRequest
0 голосов
/ 02 мая 2019

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

Итак, интерфейс:

public interface Xyz { ...}

Абстрактный базовый класс:

public abstract class Abc {
    Xyz xyz;
}

Подкласс (ы) класса absctract, где я хочу автоматически связать конкретную реализацию интерфейса:

public class Def extend Abc {
    @Autowired
    // Here I want to autowire a concrete implementation of Xyz, maybe called XyzImpl. Can I do this maybe in a constructor or ...?
}

public class Ghi extend Abc {
    @Autowired
    // Here I want to autowire a concrete implementation of Xyz, maybe called XyzImpl. Can I do this maybe in a constructor or ...?
}

public class Jkl extend Abc {
    @Autowired
    // Here I want to autowire a concrete implementation of Xyz, maybe called XyzImpl. Can I do this maybe in a constructor or ...?
}

1 Ответ

1 голос
/ 02 мая 2019

Попробуйте это:

  1. В классе Abc внесите это изменение private final Xyz xyz;
  2. В классе Abc добавьте конструктор, который принимает параметр Xyz; установите поле xyz в этом конструкторе.
  3. в классе Def добавьте конструктор, который принимает параметр Xyz и который вызывает super(xyz).
  4. Автоматически связать параметр xyz в конструкторе Def.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...