I want to replace StandardServletMultipartResolver
configuration in Runtime. To achieve this I want to replace MultipartConfigElement
bean.
Actually I want to change values inside MultipartProperties
I tried to google this question but I saw only this topic:
Replace a bean inside the spring container during run-time
But this method is applicable only for my beans. I could not understand how to apply this for my case.
I've found in code spring source way how does spring create these beans:
@Configuration
@ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class,
MultipartConfigElement.class })
@ConditionalOnProperty(prefix = "spring.http.multipart", name = "enabled", matchIfMissing = true)
@EnableConfigurationProperties(MultipartProperties.class)
public class MultipartAutoConfiguration {
private final MultipartProperties multipartProperties;
public MultipartAutoConfiguration(MultipartProperties multipartProperties) {
this.multipartProperties = multipartProperties;
}
@Bean
@ConditionalOnMissingBean
public MultipartConfigElement multipartConfigElement() {
return this.multipartProperties.createMultipartConfig();
}
@Bean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME)
@ConditionalOnMissingBean(MultipartResolver.class)
public StandardServletMultipartResolver multipartResolver() {
StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();
multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily());
return multipartResolver;
}
}
I want to write something like this:
multipartProperties = ...
applicationContext.putBean(multipartProperties.createMultipartConfig())
How to replace bean in context?