New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ReactiveWebServerApplicationContext.getHttpHandler() causes early bean initialization #14666
Comments
I'm not sure that that's the problem here. In most cases it's perfectly reasonable to call I think the real problem is that the Web MVC stacktraceThread [main] (Suspended (breakpoint at line 185 in JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration)) owns: ConcurrentHashMap (id=81) owns: Object (id=82) JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$a5467a4d(JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration).jacksonObjectMapperBuilder(List) line: 185 JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$a5467a4d.CGLIB$jacksonObjectMapperBuilder$0(List) line: not available JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$a5467a4d$$FastClassBySpringCGLIB$$c13a17e4.invoke(int, Object, Object[]) line: not available MethodProxy.invokeSuper(Object, Object[]) line: 228 ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(Object, Method, Object[], MethodProxy) line: 361 JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$a5467a4d.jacksonObjectMapperBuilder(List) line: not available NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 Method.invoke(Object, Object...) line: 498 CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Object, Method, Object...) line: 154 ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 582 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1256 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1105 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 543 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 2033268925.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 199 DependencyDescriptor.resolveCandidate(String, Class, BeanFactory) line: 251 DefaultListableBeanFactory.doResolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1138 DefaultListableBeanFactory.resolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1065 ConstructorResolver.resolveAutowiredArgument(MethodParameter, String, Set, TypeConverter) line: 818 ConstructorResolver.createArgumentArray(String, RootBeanDefinition, ConstructorArgumentValues, BeanWrapper, Class[], String[], Executable, boolean) line: 724 ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 474 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1256 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1105 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 543 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 2033268925.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 199 DependencyDescriptor.resolveCandidate(String, Class, BeanFactory) line: 251 DefaultListableBeanFactory.doResolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1138 DefaultListableBeanFactory.resolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1065 ConstructorResolver.resolveAutowiredArgument(MethodParameter, String, Set, TypeConverter) line: 818 ConstructorResolver.createArgumentArray(String, RootBeanDefinition, ConstructorArgumentValues, BeanWrapper, Class[], String[], Executable, boolean) line: 724 ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 474 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1256 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1105 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 543 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 2033268925.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 199 TransformerAnnotationPostProcessor(AbstractMethodAnnotationPostProcessor).resolveTargetBeanFromMethodWithBeanAnnotation(Method) line: 449 TransformerAnnotationPostProcessor(AbstractMethodAnnotationPostProcessor).postProcess(Object, String, Method, List) line: 133 MessagingAnnotationPostProcessor.processAnnotationTypeOnMethod(Object, String, Method, Class, List) line: 185 MessagingAnnotationPostProcessor.lambda$postProcessAfterInitialization$0(Object, String, Class, Method) line: 158 1254827280.doWith(Method) line: not available ReflectionUtils.doWithMethods(Class, MethodCallback, MethodFilter) line: 562 ReflectionUtils.doWithMethods(Class, MethodCallback, MethodFilter) line: 569 MessagingAnnotationPostProcessor.postProcessAfterInitialization(Object, String) line: 139 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsAfterInitialization(Object, String) line: 439 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1712 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 581 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 2033268925.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 199 DefaultListableBeanFactory.preInstantiateSingletons() line: 760 AnnotationConfigServletWebServerApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 869 AnnotationConfigServletWebServerApplicationContext(AbstractApplicationContext).refresh() line: 550 AnnotationConfigServletWebServerApplicationContext(ServletWebServerApplicationContext).refresh() line: 140 SpringApplication.refresh(ApplicationContext) line: 759 SpringApplication.refreshContext(ConfigurableApplicationContext) line: 395 SpringApplication.run(String...) line: 327 SpringApplication.run(Class[], String[]) line: 1255 SpringApplication.run(Class, String...) line: 1243 ScratchApplication.main(String[]) line: 22
With WebFlux, I get the following: WebFlux stacktraceThread [main] (Suspended (breakpoint at line 185 in JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration)) owns: ConcurrentHashMap (id=85) owns: Object (id=86) JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$93662396(JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration).jacksonObjectMapperBuilder(List) line: 185 JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$93662396.CGLIB$jacksonObjectMapperBuilder$0(List) line: not available JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$93662396$$FastClassBySpringCGLIB$$1fa55dac.invoke(int, Object, Object[]) line: not available MethodProxy.invokeSuper(Object, Object[]) line: 228 ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(Object, Method, Object[], MethodProxy) line: 361 JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$93662396.jacksonObjectMapperBuilder(List) line: not available NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 Method.invoke(Object, Object...) line: 498 CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Object, Method, Object...) line: 154 ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 582 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1256 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1105 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 543 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 1048434276.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 199 DependencyDescriptor.resolveCandidate(String, Class, BeanFactory) line: 251 DefaultListableBeanFactory.doResolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1138 DefaultListableBeanFactory.resolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1065 ConstructorResolver.resolveAutowiredArgument(MethodParameter, String, Set, TypeConverter) line: 818 ConstructorResolver.createArgumentArray(String, RootBeanDefinition, ConstructorArgumentValues, BeanWrapper, Class[], String[], Executable, boolean) line: 724 ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 474 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1256 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1105 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 543 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 1048434276.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 199 DependencyDescriptor.resolveCandidate(String, Class, BeanFactory) line: 251 DefaultListableBeanFactory.doResolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1138 DefaultListableBeanFactory.resolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1065 ConstructorResolver.resolveAutowiredArgument(MethodParameter, String, Set, TypeConverter) line: 818 ConstructorResolver.createArgumentArray(String, RootBeanDefinition, ConstructorArgumentValues, BeanWrapper, Class[], String[], Executable, boolean) line: 724 ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 474 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1256 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1105 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 543 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 1048434276.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 199 DefaultListableBeanFactory$MultiElementDescriptor(DependencyDescriptor).resolveCandidate(String, Class, BeanFactory) line: 251 DefaultListableBeanFactory.addCandidateEntry(Map, String, DependencyDescriptor, Class) line: 1325 DefaultListableBeanFactory.findAutowireCandidates(String, Class, DependencyDescriptor) line: 1291 DefaultListableBeanFactory.resolveMultipleBeans(DependencyDescriptor, String, Set, TypeConverter) line: 1193 DefaultListableBeanFactory.doResolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1096 DefaultListableBeanFactory$DependencyObjectProvider.getIfAvailable() line: 1686 WebFluxAutoConfiguration$WebFluxConfig$$EnhancerBySpringCGLIB$$9b8d1745(WebFluxAutoConfiguration$WebFluxConfig).(ResourceProperties, WebFluxProperties, ListableBeanFactory, ObjectProvider>, ObjectProvider>, ObjectProvider, ObjectProvider>) line: 125 WebFluxAutoConfiguration$WebFluxConfig$$EnhancerBySpringCGLIB$$9b8d1745.(ResourceProperties, WebFluxProperties, ListableBeanFactory, ObjectProvider, ObjectProvider, ObjectProvider, ObjectProvider) line: not available NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method] NativeConstructorAccessorImpl.newInstance(Object[]) line: 62 DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45 Constructor.newInstance(Object...) line: 423 BeanUtils.instantiateClass(Constructor, Object...) line: 170 CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Constructor, Object...) line: 117 ConstructorResolver.autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 275 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 1276 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1133 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 543 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 1048434276.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 199 DefaultListableBeanFactory$MultiElementDescriptor(DependencyDescriptor).resolveCandidate(String, Class, BeanFactory) line: 251 DefaultListableBeanFactory.addCandidateEntry(Map, String, DependencyDescriptor, Class) line: 1325 DefaultListableBeanFactory.findAutowireCandidates(String, Class, DependencyDescriptor) line: 1291 DefaultListableBeanFactory.resolveMultipleBeans(DependencyDescriptor, String, Set, TypeConverter) line: 1193 DefaultListableBeanFactory.doResolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1096 DefaultListableBeanFactory.resolveDependency(DependencyDescriptor, String, Set, TypeConverter) line: 1065 AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(Object, String, PropertyValues) line: 659 InjectionMetadata.inject(Object, String, PropertyValues) line: 91 AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(PropertyValues, PropertyDescriptor[], Object, String) line: 373 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, RootBeanDefinition, BeanWrapper) line: 1350 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 580 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 1048434276.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 199 ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 372 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1256 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1105 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 543 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 1048434276.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class) line: 204 AnnotationConfigReactiveWebServerApplicationContext(AbstractApplicationContext).getBean(String, Class) line: 1095 WebHttpHandlerBuilder.applicationContext(ApplicationContext) line: 161 HttpHandlerAutoConfiguration$AnnotationConfig$$EnhancerBySpringCGLIB$$417a7db2(HttpHandlerAutoConfiguration$AnnotationConfig).httpHandler() line: 59 HttpHandlerAutoConfiguration$AnnotationConfig$$EnhancerBySpringCGLIB$$417a7db2.CGLIB$httpHandler$0() line: not available HttpHandlerAutoConfiguration$AnnotationConfig$$EnhancerBySpringCGLIB$$417a7db2$$FastClassBySpringCGLIB$$e2b5e5bc.invoke(int, Object, Object[]) line: not available MethodProxy.invokeSuper(Object, Object[]) line: 228 ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(Object, Method, Object[], MethodProxy) line: 361 HttpHandlerAutoConfiguration$AnnotationConfig$$EnhancerBySpringCGLIB$$417a7db2.httpHandler() line: not available NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 Method.invoke(Object, Object...) line: 498 CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Object, Method, Object...) line: 154 ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 582 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1256 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1105 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 543 DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 503 DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 317 1048434276.getObject() line: not available DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222 DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 315 DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class) line: 204 AnnotationConfigReactiveWebServerApplicationContext(ReactiveWebServerApplicationContext).getHttpHandler() line: 155 AnnotationConfigReactiveWebServerApplicationContext(ReactiveWebServerApplicationContext).createWebServer() line: 99 AnnotationConfigReactiveWebServerApplicationContext(ReactiveWebServerApplicationContext).onRefresh() line: 73 AnnotationConfigReactiveWebServerApplicationContext(AbstractApplicationContext).refresh() line: 544 AnnotationConfigReactiveWebServerApplicationContext(ReactiveWebServerApplicationContext).refresh() line: 61 SpringApplication.refresh(ApplicationContext) line: 759 SpringApplication.refreshContext(ConfigurableApplicationContext) line: 395 SpringApplication.run(String...) line: 327 SpringApplication.run(Class[], String[]) line: 1255 SpringApplication.run(Class, String...) line: 1243 ScratchApplication.main(String[]) line: 22
The second one is way early and being triggered by |
@philwebb , thanks for the quick turn around, but I don't think that this fixes our original problem with the |
@philwebb I am not sure I get the history of this issue either. This is the single call to the variant that allows eager init so perhaps we should change it to the one that allows to skip eager inits? This wouldn't force factory beans that do not expose the type though. |
@artembilan Injecting |
@artembilan Can you also provide some more details of what we should do with sample? It runs, but I'm not sure what to look at. |
I confirm that with this fix the mentioned sample works as expected:
and I did this change in the code:
The output is pretty good:
So, I think we are good so far, however we still need to revise our usage for the Thank you all for the help! |
The use of We do, however, need to make a change to the use of volatile fields in |
I am afraid I sent you in the wrong direction. And while I was typing, Andy wrote a fully summary so I'll just refer to that :) |
OK. So, looks like we are all good then! 😄 Thank you again! |
I'm going to refactor this a little because @wilkinsona pointed out we're no longer thread safe. |
Fix possible NPE in `ReactiveWebServerApplicationContext`. See gh-14666
The config is like this:
But Spring Integration is not relevant here at all.
The main point that we have some Jackson
Module
bean definition and other one depends on theObjectMapper
auto-configured in the mentionedJacksonAutoConfiguration
.The
JacksonAutoConfiguration
has the code like this:That
customize()
calls aeventually.
This is really inappropriate to call
getBeansOfType()
from the other bean definition: it's too early to instantiate all the beans in the application context.I wonder why
ObjectProvider<Module>
is not used as a dependency for thatjacksonObjectMapperBuilder
bean definition...For more info see spring-projects/spring-integration#2565
The text was updated successfully, but these errors were encountered: