2016-07-08 1 views
1

Je suis intéressé de connaître les classes utilisées dans le tag d'intégration de printemps afin de pouvoir obtenir plus de détails sur les tags en passant par le javadoc des classes.Quelles sont les classes d'intégration de printemps utilisées stdin-channel-adapter?

J'ai deux questions fondamentales:

  1. -ce que les balises XML d'intégration de ressort (par exemple stdin-canal adaptateur) pour convertir <bean class=".." /> balises?
  2. comment déterminer la classe de bean associée aux étiquettes d'intégration de ressort?

Voici un exemple simple d'intégration ressort fichier de contexte xml:

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


<int-stream:stdin-channel-adapter id="producer" channel="messageChannel" /> 
<int:poller id="defaultPoller" default="true" max-messages-per-poll="2" fixed-rate="100" /> 

<int-stream:stdout-channel-adapter id="consumer" channel="messageChannel" append-newline="true" /> 

<int:channel id="messageChannel" /> 

</beans> 

Merci

+1

1) * "Ne convertir les balises aux balises?" * Eh, quoi?!? --- 2) Exécutez le code, puis obtenez le haricot de l'usine de haricots et voyez ce que c'est. C'est ce qu'on appelle [preuves empiriques] (https://en.wikipedia.org/wiki/Empirical_evidence) (connaissances acquises par l'observation). – Andreas

+0

1) Désolé, c'était un problème de formatage. J'ai mis à jour la question pour donner un peu plus de clarté. 2) Votre solution est une façon de le faire. Merci. – kevin

Répondre

5

Je pense que vous avez une erreur dans votre première question. Voir le commentaire d'Andreas.

De toute façon, la réponse est pour vous.

Toutes les balises personnalisées dans Spring sont handler par le NamespaceHandler. En général, vous pouvez trouver les impl cibles dans le fichier comme META-INF/spring.handlers dans le particulier pot de printemps, par exemple:

http\://www.springframework.org/schema/integration/stream=org.springframework.integration.stream.config.StreamNamespaceHandler 

Avec cela dans les mains, vous pouvez trouver le code comme:

this.registerBeanDefinitionParser("stdin-channel-adapter", new ConsoleInboundChannelAdapterParser()); 

Si vous pouvez déterminer qu'un ConsoleInboundChannelAdapterParser est responsable des analyses et des beans d'instanciation pour l'étiquette <stdin-channel-adapter>.

Et là, vous pouvez trouver le code comme:

BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
      "org.springframework.integration.stream.CharacterStreamReadingMessageSource"); 

Ainsi, la classe réelle, par exemple, de haricot cible est CharacterStreamReadingMessageSource. Mais ce n'est pas tout.

S'il vous plaît, regardez ici pour la conception et le modèle: http://docs.spring.io/spring-integration/docs/4.3.0.RELEASE/reference/html/overview.html#programming-tips

+0

Excellente explication et c'est ce que je cherchais. Merci. – kevin