Я использую Spring Cloud Stream.
Мне не нравится подход, когда интерфейсы аннотируются с помощью @Input или @Ouput, а затем используются @EnableBindings этого интерфейса, потому что в моем коде много конфигурационного материала.
Есть ли способ настроить это с помощью конфигурации XML?
Спасибо!
"потому что в моем коде разбросано много всего, что связано с конфигурацией" на самом деле не вопрос XML или аннотации. Если вы не будете осторожны с их дизайном, неважно, какой подход вы выберете, у вас будет беспорядок. Так что в основном это не веская причина и / или беспокойство, а скорее личное предпочтение.
Есть способ использовать XML в приложении Spring-Cloud-Stream; В конце концов, реальное приложение на самом деле является приложением Spring Integration (SI), которое получает и / или отправляет из / в каналы сообщений.
Однако в отношении @EnableBindings, @Input or @Ouput необходимо понимать их основную цель (цели), а именно:
чтобы помочь с предоставлением таких ресурсов (очередь, тема)
и т.д. . .
Конечно, вы можете позаботиться об этом самостоятельно, вернувшись к чистому SI и используя входящие / исходящие адаптеры, фабрики соединений и сеансов, шаблоны повторных попыток и т. д., Но это не будет представлять собой приложение Spring-Cloud-Stream.
Кроме того, не забывайте о Spring Boot, где многие вещи создаются на основе соглашения / мнения, где вам вообще ничего не нужно делать (кроме как иметь автоконфигурацию JAR в вашем пути к классам) и spring-cloud -stream действительно основывается на этих концепциях, требуя только предоставить один элемент конфигурации из коробки - @EnableBindings, а мы позаботимся обо всем остальном.
Так что на самом деле вопрос действительно в загружать или не загружать, а не в XML и аннотации.
При этом мы постоянно изучаем варианты, позволяющие упростить конфигурацию, поэтому, если у вас есть предложения, поделитесь ими.