2016-01-09 3 views
0

У меня есть несколько сервисов, которые доступны для удаленных 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 = "")? Идеи высокого уровня приветствуются.

Заранее благодарим вас за понимание внутренних деталей пружин.

ответ

0

A BeanDefinitionRegistryPostProcessor создает все определения компонентов для экспортеров (после сканирования для пользовательской аннотации) и создает обработчик Map, чтобы связать его вместе.

Смежные вопросы