169 похожих чатов

Вопрос Входные данные class Controller { @Aitowired Service service;

@GetMapping("doSomething")
void doSomething() {
service.doSomething();
}
}

interface Service {
void doSomething();
}

@ConditionalOnProperty
class ServiceImpl1 implements Service {
void doSomething(){}
}

@ConditionalOnProperty
class ServiceImpl2 implements Service {
void doSomething(){}
}

Появляется необходимость версионирования апи. Как мне это говно разрулить чтоб в Service не добавлять doSomethingV2?

2 ответов

19 просмотров

Если так охото. То вам придется внедрить все две версии. Тока по имени бина, и вызывать где хотите

Как вариант не факт что лучший но вполне рабочий- через цепочку обязанностей interface Service { void doSomething(); boolean accept(String version) } @ConditionalOnProperty class ServiceImpl1 implements Service { void doSomething(){} boolean accept(String version) {return true;} } @ConditionalOnProperty class ServiceImpl2 implements Service { void doSomething(){} boolean accept(String version) {return "V1".equals(version);} } @ConditionalOnProperty class ServiceImpl2V2 implements Service { void doSomething(){} boolean accept(String version) {return "V2".equals(version);} } @Component class ServiceResolver(){ @Autowired private List<Service> services; public Service resolve(String version){ return services.stream().filter(Service::accept).findFirst().orElseThrow(new RuntimeException("Незнакомая версия")) } class Controller { @Autowired Service serviceResolver; @GetMapping("doSomething") void doSomething(@PathVariable String version) { serviceResolver.resolve(version).doSomething(); } }

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта