java - Spring bean config using static method from another bean with grails DSL -
on grails 2.3.7, service exposes several decorator methods:
class cachemanager { static readonlycache getreadonlycache(name) static readwritecache getreadwritecache(name) }
i want configure services these decorator methods, this:
beans = { cachemanager(cachemanager){ ... } pdfprocessor(pdfprocessor){ documentcache = ref('cachemanager').getreadonlycache('docscache') } isbnvalidator(isbnvalidator){ cache = ref('cachemanager').getreadwritecache('simplecache') }
is there way accomplish this?
updatethanks ian's suggestion, got generic solution working:
@singleton class cachemanager { static readonlycache getreadonlycache(name) static readwritecache getreadwritecache(name) } beans = { cachemanager(cachemanager){ bean -> bean.factorymethod = 'getinstance' cachedecorator(methodinvokingfactorybean) { bean -> bean.dependson = ['cachemanager'] targetclass = cachemanager targetmethod = 'getinstance' } pdfprocessor(pdfprocessor){ documentcache = "#{cachedecorator.getreadonlycache('docscache')}" } isbnvalidator(isbnvalidator){ cache = "#{cachedecorator.getreadwritecache('simplecache')}" }
configure cachedecorator
methodinvokingfactorybean
, returns singleton cachemanager
, safely invoke methods.
if want ensure cachemanager set before invoking getter methods purely @ configuration level like
cachemanager(cachemanager) { ... } pdfdocumentcache(methodinvokingfactorybean) { bean -> bean.dependson = ['cachemanager'] targetclass = cachemanager targetmethod = 'getrocache' arguments = ['somecache'] } pdfprocessor(pdfprocessor) { documentcache = pdfdocumentcache }
the dependson
should ensure static getrocache
method not called until cachemanager
bean has been initialized.
java spring grails groovy spring-dsl
No comments:
Post a Comment