@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
Если вы нигде явно его не регистрируете, то при помощи рефлексии.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы