我是Spring的新手,我不喜歡代碼重復(fù)。我寫了一個(gè)工作正常的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個(gè)這樣的適配器,唯一的區(qū)別是imapUrl。沒有代碼重復(fù)怎么辦?
2 回答

米脂
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
我并不是在建議您需要?jiǎng)討B(tài)渠道;我建議您可以使用該示例使用的相同技術(shù),以創(chuàng)建由屬性驅(qū)動(dòng)的具有相同配置的多個(gè)“ cookie切割器”實(shí)例。即AnnotationConfigApplicationContext
從您的配置類創(chuàng)建一個(gè)新的;在其環(huán)境中加載實(shí)例的屬性,并通過刷新來創(chuàng)建上下文。從而避免代碼重復(fù)。
- 2 回答
- 0 關(guān)注
- 715 瀏覽
添加回答
舉報(bào)
0/150
提交
取消