簡體   English   中英

Spring Groovy DSL匿名內部bean與構造函數

[英]Spring Groovy DSL anonymous inner bean with constructor

給定這兩個bean:

myMessageAdapter(MessageListenerAdapter) { bean ->
    bean.constructorArgs = [ref('jmsReceiver')]
    defaultListenerMethod = 'processMessage'
}

listenerContainer(DefaultMessageListenerContainer) {
    connectionFactory = ref('connectionFactory')
    destinationName = "MyDest"
    messageListener = ref('myMessageAdapter')
}

我想用匿名內部bean替換myMessageAdapter

嘗試過:

listenerContainer(DefaultMessageListenerContainer) {
    connectionFactory = ref('connectionFactory')
    destinationName = "MyDest"
    messageListener = { MessageListenerAdapter bean ->
        bean.constructorArgs = [ref('jmsReceiver')]
        defaultListenerMethod = 'processMessage'
    }
}

但是它失敗並顯示“無法在空對象上設置屬性'constructorArgs'”

如何傳遞構造函數參數?

當您查看BeanBuilder的源代碼和setPropertyOnBeanConfig方法時,我認為這是不可能的

實現此目的的方法是在bean閉包內設置類:

listenerContainer(DefaultMessageListenerContainer) {
    connectionFactory = ref('connectionFactory')
    destinationName = "MyDest"
    messageListener = { bean ->
        bean.beanClass = MessageListenerAdapter 
        bean.constructorArgs = [ref('jmsReceiver')]
        bean.defaultListenerMethod = 'processMessage'
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM