2015-04-10 3 views
0

У меня есть вопрос о Спринг интеграции (или в основном Спринг общего): я использую в WebService Inbound Gateway, в моей конфигурации XML Spring:Внедрение изменений для Spring Namespaces (обмен боб)

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:int-ws="http://www.springframework.org/schema/integration/ws" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/integration/ws http://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd" > 

    <int-ws:inbound-gateway 
    id="ws-in-gw-user" 
    request-channel="in-user" 
    reply-channel="out-user" 
    mapped-request-headers="*" 
    /> 
... 
</beans> 

Когда Я использую <int-ws:inbound-gateway> Тег, SimpleWebServiceInboundGateway. Теперь я хочу обменять это воплощение на самописное расширение этого класса. Есть идеи, как это сделать?

ответ

0

Вы можете использовать фасоль BeanPostProcessor.

import org.springframework.beans.factory.config.BeanPostProcessor; 

public class SimpleWebServiceInboundGatewayBeanPostProcessor implements BeanPostProcessor{ 

    public Object postProcessBeforeInitialization(Object bean, String beanName){ 
     if(bean instanceof SimpleWebServiceInboundGateway) { 
      return new MyCustomWebSerivceInboundGateway(); 
     } 
     return bean; 
    } 

    public Object postProcessAfterInitialization(Object bean, String beanName) { 
     return bean; 
    } 
} 

В вашей конфигурации:

<bean class="....SimpleWebServiceInboundGatewayBeanPostProcessor" /> 

BeanPostProcessor позволяет обменивайтесь бобы во время инициализации.

+0

Hi reagten, спасибо за ваш ответ. Это отлично работает, но изменит КАЖДУЮ конфигурацию XML. В моем понимании, теги XML - это краткое описание для описания некоторых компонентов. Есть ли способ узнать, какие компоненты я должен определить в своей конфигурации, а не int-ws: inbound-gateway Tag = –

+0

Что вы подразумеваете под изменением КАЖДОЙ конфигурации XML? ". BeanPostProcessor применяется к каждому компоненту, который создается во время инициализации, и вы можете тестировать Type и Bean-Name, поэтому другие бобы остаются неизменными. –

+0

http://grepcode.com/file/repo1.maven.org/maven2/org.springframework.integration/spring-integration-ws/4.1.1.RELEASE/org/springframework/integration/ws/config/WebServiceInboundGatewayParser.java #WebServiceInboundGatewayParser –

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