【问题标题】:How to replace spring internal bean in Runtime如何在运行时替换spring内部bean
【发布时间】: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


    【解决方案1】:
    You try to add-commons-fileupload.jar to pom.xml 
    
    
    <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.2</version>
    

    在 WebConfig 中:

    @豆 公共 CommonsMultipartResolver multipartResolver() {

        CommonsMultipartResolver cmr = new CommonsMultipartResolver();
        cmr.setMaxUploadSize(maxUploadSizeInMb * 2);
        cmr.setMaxUploadSizePerFile(maxUploadSizeInMb); //bytes
        return cmr;
    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      相关资源
      最近更新 更多