我是Spring的新手,我不喜歡代碼重復。我寫了一個工作正常的ImapAdapter:@Componentpublic class GeneralImapAdapter { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private EmailReceiverService emailReceiverService; @Bean @InboundChannelAdapter(value = "emailChannel", poller = @Poller(fixedDelay = "10000", taskExecutor = "asyncTaskExecutor")) public MessageSource<javax.mail.Message> mailMessageSource(MailReceiver imapMailReceiver) { return new MailReceivingMessageSource(imapMailReceiver); } @Bean @Value("imaps://<login>:<pass>@<url>:993/inbox") public MailReceiver imapMailReceiver(String imapUrl) { ImapMailReceiver imapMailReceiver = new ImapMailReceiver(imapUrl); imapMailReceiver.setShouldMarkMessagesAsRead(true); imapMailReceiver.setShouldDeleteMessages(false); // other setters here return imapMailReceiver; } @ServiceActivator(inputChannel = "emailChannel", poller = @Poller(fixedDelay = "10000", taskExecutor = "asyncTaskExecutor")) public void emailMessageSource(javax.mail.Message message) { emailReceiverService.receive(message); }}但是我想要大約20個這樣的適配器,唯一的區別是imapUrl。沒有代碼重復怎么辦?
2 回答

米脂
TA貢獻1836條經驗 獲得超3個贊
我并不是在建議您需要動態渠道;我建議您可以使用該示例使用的相同技術,以創建由屬性驅動的具有相同配置的多個“ cookie切割器”實例。即AnnotationConfigApplicationContext
從您的配置類創建一個新的;在其環境中加載實例的屬性,并通過刷新來創建上下文。從而避免代碼重復。
- 2 回答
- 0 關注
- 704 瀏覽
添加回答
舉報
0/150
提交
取消