2016-08-10 3 views
1

Ich bin neu in Spring Framework und ich habe einige Probleme bei der Konvertierung von * .xml zu Java Config. Ich weiß nicht, wie soll ich diese Zeile ersetzen:Spring Integration Mail - Konvertierung von XML in Java Config

<int:channel id="emails"/> 

Sie meine Dateien unter

XML-Datei sehen:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     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 http://www.springframework.org/schema/integration/spring-integration.xsd 
     http://www.springframework.org/schema/integration/mail http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" 
     xmlns:int="http://www.springframework.org/schema/integration" 
     xmlns:int-mail="http://www.springframework.org/schema/integration/mail" 
     xmlns:util="http://www.springframework.org/schema/util"> 

    <int:channel id="emails"/> 

    <util:properties id="javaMailProperties"> 
     <prop key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop> 
     <prop key="mail.imap.socketFactory.fallback">false</prop> 
     <prop key="mail.store.protocol">imaps</prop> 
     <prop key="mail.debug">true</prop> 
    </util:properties> 

    <int-mail:imap-idle-channel-adapter id="mailAdapter" 
            store-uri="imaps://login:[email protected]:993/INBOX" 
            java-mail-properties="javaMailProperties" 
            channel="emails" 
            should-delete-messages="false" 
            should-mark-messages-as-read="true"> 
    </int-mail:imap-idle-channel-adapter> 
</beans> 

Java Config I aready erstellt haben:

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.integration.mail.ImapIdleChannelAdapter; 
import org.springframework.integration.mail.ImapMailReceiver; 

import java.util.Properties; 

@Configuration 
class ImapConfiguration { 

    private Properties javaMailProperties() { 
     Properties javaMailProperties = new Properties(); 

     javaMailProperties.setProperty("mail.imap.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
     javaMailProperties.setProperty("mail.imap.socketFactory.fallback","false"); 
     javaMailProperties.setProperty("mail.store.protocol","imaps"); 
     javaMailProperties.setProperty("mail.debug","true"); 

     return javaMailProperties; 
    } 

    @Bean 
    ImapIdleChannelAdapter mailAdapter() { 
     ImapMailReceiver mailReceiver = new ImapMailReceiver("imaps://login:[email protected]:993/INBOX"); 

     mailReceiver.setJavaMailProperties(javaMailProperties()); 
     mailReceiver.setShouldDeleteMessages(false); 
     mailReceiver.setShouldMarkMessagesAsRead(true); 

     return new ImapIdleChannelAdapter(mailReceiver); 
    } 
} 

Antwort

2

Es auf dem Kanal ab, die Sie wollen, aber im Grunde gelten diese

Messaging Channels

@Bean 
public PollableChannel defaultChannel() { 
    return new QueueChannel(10); 
} 

@Bean 
public SubscribableChannel subscribeChannel() { 
    return new PublishSubscribeChannel(); 
} 
0

Sein total abhängig davon, welche Art von Nachrichtenkanälen Sie verwenden

Wenn Sie Sie sind sing point to point to channel dann DirectChannel und NullChannel sind die Optionen für Sie. Verwenden Sie für den Publish-Subscriber-Kanal PublishSubscribeChannel, QueueChannel, PriorityChannel, RendezvousChannel, ExecutorChannel und ScopedChannel.

Ich würde vorschlagen, Sie gehen zurück und überprüfen, wie Sie

tat
applicationcontext.getBean("emails",DirectChannel.class) 

fügen Sie dann

@Bean 
    public DirectChannel defaultChannel() { 
     return new DirectChannel(); 
    } 

ist die gesamte Konfiguration Klasse java.

import java.util.Properties; 

    import org.springframework.beans.factory.annotation.Value; 
    import org.springframework.context.annotation.Bean; 
    import org.springframework.context.annotation.Configuration; 
    import org.springframework.integration.channel.DirectChannel; 
    import org.springframework.integration.mail.ImapIdleChannelAdapter; 
    import org.springframework.integration.mail.ImapMailReceiver; 

    @Configuration 
    public class IMAPIdleConfiguration { 

     @Value("${imap.mailReceiverURL}") 
     private String imapMailReceiverURL; 

     private Properties javaMailProperties() { 
      Properties javaMailProperties = new Properties(); 
      /* 
      * <prop 
      * key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</ 
      * prop> <prop key="mail.imap.socketFactory.fallback">false</prop> <prop 
      * key="mail.store.protocol">imaps</prop> <prop 
      * key="mail.debug">false</prop> <prop 
      * key="mail.smtp.timeout">10000</prop> 
      */ 
      javaMailProperties.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
      javaMailProperties.setProperty("mail.imap.socketFactory.fallback", "false"); 
      javaMailProperties.setProperty("mail.store.protocol", "imaps"); 
      javaMailProperties.setProperty("mail.debug", "true"); 
      javaMailProperties.setProperty("mail.smtp.timeout", "10000"); 

      return javaMailProperties; 
     } 

     @Bean 
     ImapIdleChannelAdapter mailAdapter() { 

      ImapMailReceiver mailReceiver = new ImapMailReceiver(this.imapMailReceiverURL); 
      mailReceiver.setJavaMailProperties(javaMailProperties()); 
      mailReceiver.setShouldDeleteMessages(false); 
      mailReceiver.setShouldMarkMessagesAsRead(true); 

      ImapIdleChannelAdapter imapIdleChannelAdapter = new 
ImapIdleChannelAdapter(mailReceiver); 
      imapIdleChannelAdapter.setAutoStartup(true); 
      imapIdleChannelAdapter.setOutputChannel(directChannel()); 
      return imapIdleChannelAdapter; 

     } 

     @Bean 
     public DirectChannel directChannel() { 
      return new DirectChannel(); 
     } 

    } 
Verwandte Themen