@DDwrt100

Как работает в Java механизм наследования в больших продуктах типа SPRING,KAFKA?

Добрый день. Помогите пожалуйста разобраться.
Уже несколько раз встречал такую ситуацию: при использовании крупных продуктов типа Spring.
Для написания кастомной логики каких то модулей необходимо отнаследоваться от какого нибудь класса (типа AbstarctSecContext) , и с помощью аннотации Override переписать некоторые модули, например чтобы заработал шаблонизатор свой.
И мне непонятен сам механизм этого действия. Например как программа узнает, что у кода продукта появился наследник , и нужно его использовать , а не предыдущую реализации в свой работе?
Снизу привожу пример учебного кода по kafka streams, где пишется свой коннектор.

public class TestSinkConnector  extends SinkConnector {

    public static final String FILE_CONFIG = "file";
    public static final String NAME_CONFIG = "numb";

    // config start
    private static final ConfigDef CONFIG_DEF = new ConfigDef()
            .define(FILE_CONFIG, Type.STRING, Importance.HIGH, "Destination filename");
    // config end

    private String fileName = "/tmp/monitor.txt";

    @Override
    public String version() {
        return "1.0";
    }

    @Override
    public void start(Map<String, String> props) {

        // config start
        AbstractConfig parsedConfig = new AbstractConfig(CONFIG_DEF, props);
        fileName = parsedConfig.getString(FILE_CONFIG);
        // config end
    }

    @Override
    public Class<? extends Task> taskClass() {
        return TestSinkTask.class;
    }

    @Override
    public List<Map<String, String>> taskConfigs(int maxTasks) {
        ArrayList<Map<String, String>> configs = new ArrayList<>();
        for(int i=0; i<maxTasks; i++) {
            Map<String, String> config = new HashMap<>();
            config.put(NAME_CONFIG,"NUMBER-"+(i+1));
            config.put(FILE_CONFIG,fileName);
            configs.add(config);
        }
        return configs;
    }

    @Override
    public void stop() {
    }

    @Override
    public ConfigDef config() {
        return new ConfigDef();
    }

}
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
vabka
@vabka
Токсичный шарпист
Если вы нигде явно его не регистрируете, то при помощи рефлексии.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы