Thanks, Tony!

Thanks to your tip, I was able to use my own ControllerFactory by setting 
controllerFactoryClass in inflector.yaml. I also made it implement 
ApplicationContextAware and wired in my ApplicationContext successfully. 
However, Inflector also tries to instantiate my controllerFacotry in 
Configuration.java:

controllerFactory = Class.forName(controllerFactoryClass).asSubclass(
ControllerFactory.class).newInstance();

This creates a new instance of my ControllerFactory which obviously doesn't 
have my ApplicationContext.

I tried browsing through the springboot sample code to understand how the 
spring instance is wired into swagger, but it is not clear to me what is 
going on. At this point I want to understand how to get Swagger to use the 
same instance that I am creating via spring.


On Thursday, February 16, 2017 at 9:05:28 AM UTC-8, tony tam wrote:
>
> I believe you can implement your own ControllerFactory to do this.  See 
> here:
>
>
> https://github.com/swagger-api/swagger-inflector/blob/master/src/main/java/io/swagger/inflector/config/ControllerFactory.java
>
> On Feb 15, 2017, at 5:16 PM, Abdullah Mourad <[email protected] 
> <javascript:>> wrote:
>
> To clarify, my initial instance that is created by spring is created 
> correctly, but it appears that inflector creates a new instance for each 
> operation - In this case my controller has 2 operations, so I end up with 3 
> separate instances of my controller. The 2 non-spring created instances do 
> not have the proper fields initialized (as expected since they are not 
> created via spring).
>
> On Wednesday, February 15, 2017 at 5:14:16 PM UTC-8, Abdullah Mourad wrote:
>>
>> I am using codegen to generate my controllers and inflector to route to 
>> them. I would like to use Spring to populate some managers in my 
>> controllers but inflector creates a new instance of the controller each 
>> time and those don't get the managers injected properly. Is there any way 
>> around this? Is it possible to use a single instance of my controller?
>>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Swagger" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to