Groovy Spring Bean for Static Factory
I started playing around with Grails again recently and ran into a problem trying to create a bean in the Grails resources.groovy file for a static factory. After several frustrating hours trying to find the right combination, I eventually stumbled upon an answer.
The factory I was trying to create a bean from was the JAX-RS Client API class ClientBuilder.newClient() which returns a Client object.
Here is what the bean definition looks like in my Grails resources.groovy file:
1 2 3 4 5 6 7 8 | import javax.ws.rs.client.ClientBuilder beans = { httpClient(ClientBuilder) { bean -> bean.factoryMethod = 'newClient' bean.destroyMethod = 'close' } } |
Then in your Grails service or controller you can autowire or inject the bean by doing the following:
1 2 3 4 5 6 7 | class FooService { def httpClient def get (url) { return httpClient.target(url).request(). get () } } |
Hope it helps the next person.