У меня есть несколько сервисов, которые доступны для удаленных java-оконечных точек, используя HttpInvokerProxyFactoryBean (клиент) и HttpInvokerServiceExporter (сервер).Динамическое создание SimpleUrlHandlerMapping
На сервере существующей методика является основной, и просто включает в себя:
@Configuration
public class RemotingConfig {
@Autowired
private Service1 service1;
@Autowired
private Service2 service2;
//... many more ...
@Bean
public SimpleUrlHandlerMapping remotingMapping() {
SimpleUrlHandlerMapping urlHandler = new SimpleUrlHandlerMapping();
urlHandler.setOrder(1);
Properties mappings = new Properties();
mappings.put("/url_for_service1", "service1Exporter");
mappings.put("/url_for_service2", "service2Exporter");
// many more ....
urlHandler.setMappings(mappings);
return urlHandler;
}
@Bean
public HttpInvokerServiceExporter service1Exporter() {
HttpInvokerServiceExporter service1Exporter = new HttpInvokerServiceExporter();
service1Exporter.setServiceInterface(Service1.class);
service1Exporter.setService(service1);
return service1Exporter ;
}
// Many more....
}
Для обоего академической причины (понимание пружины внутренностей), а также по несколько практическим причинам, я хотел бы создать аннотацию, которая будет разрешите ручное усилие выше (RemotingConfig) заменить динамическим подходом.
аннотацией (на класс) будет выглядеть примерно так:
@ExportService(url="url_for_myservice")
@Service
public MyServiceImpl implements MyService { ... }
Вопрос: Какой подход вы бы предпринять, чтобы заменить текущее ручное создание фасолью, как это определено в RemotingConfig выше, с помощью аннотаций @ExportService (URL = "")? Идеи высокого уровня приветствуются.
Заранее благодарим вас за понимание внутренних деталей пружин.