SpringBoot,Springmvc Spring 知识总结

 


1 非常经典的初始化resttemplate的方法


  通过配置加上 条件注解实现,实现功能有设置超时参数,修改传递编码,添加拦截器等


@Configuration
@ConditionalOnClass(value = {RestTemplate.class, HttpClient.class})
public class RestTemplateConfiguration {
 
  @Value("${remote.maxTotalConnect:0}")
  private int maxTotalConnect; //连接池的最大连接数默认为0
  @Value("${remote.maxConnectPerRoute:200}")
  private int maxConnectPerRoute; //单个主机的最大连接数
  @Value("${remote.connectTimeout:2000}")
  private int connectTimeout; //连接超时默认2s
  @Value("${remote.readTimeout:30000}")
  private int readTimeout; //读取超时默认30s
 
  //创建HTTP客户端工厂
  private ClientHttpRequestFactory createFactory() {
    if (this.maxTotalConnect <= 0) {
      SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
      factory.setConnectTimeout(this.connectTimeout);
      factory.setReadTimeout(this.readTimeout);
      return factory;
    }
    HttpClient httpClient = HttpClientBuilder.create().setMaxConnTotal(this.maxTotalConnect)
        .setMaxConnPerRoute(this.maxConnectPerRoute).build();
    HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(
        httpClient);
    factory.setConnectTimeout(this.connectTimeout);
    factory.setReadTimeout(this.readTimeout);
    return factory;
  }
 
  //初始化RestTemplate,并加入spring的Bean工厂,由spring统一管理
  @Bean
  @ConditionalOnMissingBean(RestTemplate.class)
  public RestTemplate getRestTemplate() {
    RestTemplate restTemplate = new RestTemplate(this.createFactory());
    List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters();
 
    //重新设置StringHttpMessageConverter字符集为UTF-8,解决中文乱码问题
    HttpMessageConverter<?> converterTarget = null;
    for (HttpMessageConverter<?> item : converterList) {
      if (StringHttpMessageConverter.class == item.getClass()) {
        converterTarget = item;
        break;
      }
    }
    if (null != converterTarget) {
      converterList.remove(converterTarget);
    }
    converterList.add(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
 
    //加入FastJson转换器 根据使用情况进行操作,此段注释,默认使用jackson
    //converterList.add(new FastJsonHttpMessageConverter4());
    return restTemplate;
  }
 
     private void checkAuthHeaderExist(){
        List<ClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
        boolean hasBasicAuth = false;
        for (int i = 0; i < interceptors.size(); i++) {
            if (interceptors.get(i)  instanceof BasicAuthorizationInterceptor) {
                hasBasicAuth =true;
            }
        }
        if(!hasBasicAuth){
            restTemplate.getInterceptors().add(new BasicAuthorizationInterceptor(username,password));
        }
 
}

 

2 Spring 异步编程

 

主要用到了两个注解 @EnableAsync用在配置上  @Async(用在 servicer主类方法里)

步骤有3步骤

a:

@Configure //等价于 spring.xml里面的 配置

@EnableAsnyn

@ComponentScna(‘com.abc’)//等价于spring.xml里面的包扫描

Configure类

b  @Service

  class MyService{

@Async

a(){}

@Async

b(){}

}

3 主测试类

myService.a();b();运行发现ab打印内容循环展示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静山晚风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值