(Hacki sh) Переопределение Stati c method java - PullRequest
0 голосов
/ 11 января 2020

Я знаю, Java не предназначен для переопределения метода c (что является одной из причин, почему я никогда не пишу методы c). Тем не менее, я столкнулся с ситуацией, когда весенняя загрузка имеет хорошую функциональность (источник данных с автоматической настройкой), которая работает хорошо, за исключением случаев, когда я переключаюсь в облако (что дает мне нетрадиционный jdb c url - тот, который делает не запускается с jdb c) весенняя загрузка выдает исключение и не запускается. Я отследил причину root ошибки, которую можно найти здесь (где она выдает исключение, когда url не начинается с jdb c). Следовательно, если это возможно, я бы хотел просто переопределить вызов этого метода stati c, чтобы я мог оставить свою кодовую базу в рабочем состоянии. Есть ли (относительно легкий) способ сделать это в java? Если это слишком много работы, я просто определю свою собственную конфигурацию и компонент.

//from enum org.springframework.boot.jdbc.DatabaseDriver (spring boot 2.2.2.release)

public static DatabaseDriver fromJdbcUrl(String url) {
    if (StringUtils.hasLength(url)) {
        Assert.isTrue(url.startsWith("jdbc"), "URL must start with 'jdbc'"); //<------ error originates from this line
        String urlWithoutPrefix = url.substring("jdbc".length()).toLowerCase(Locale.ENGLISH);
        for (DatabaseDriver driver : values()) {
            for (String urlPrefix : driver.getUrlPrefixes()) {
                String prefix = ":" + urlPrefix + ":";
                if (driver != UNKNOWN && urlWithoutPrefix.startsWith(prefix)) {
                    return driver;
                }
            }
        }
    }
    return UNKNOWN;
}
...