【发布时间】:2017-11-27 15:19:44
【问题描述】:
我想在运行时替换StandardServletMultipartResolver 配置。为此,我想替换 MultipartConfigElement bean。
其实我想改变MultipartProperties里面的值
我试图用谷歌搜索这个问题,但我只看到了这个主题:
Replace a bean inside the spring container during run-time
但是这个方法只适用于我的豆子。我不明白如何将其应用于我的案例。
我在代码 spring 源代码中找到了 spring 如何创建这些 bean:
@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;
}
}
我想写这样的东西:
multipartProperties = ...
applicationContext.putBean(multipartProperties.createMultipartConfig())
如何在上下文中替换 bean?
【问题讨论】:
标签: java spring spring-boot replace javabeans