JAVA跨域杠愧、RestTemplate高并發(fā)下異常與配置、JSON數(shù)據(jù)Long轉(zhuǎn)String

跨域支持

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {
/**
* 跨域支持
*
* @return
/
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true); // 允許cookies跨域
config.addAllowedOrigin("
");// #允許向該服務(wù)器提交請(qǐng)求的URI律想,表示全部允許
config.addAllowedHeader("
");// #允許訪問(wèn)的頭信息,表示全部
config.setMaxAge(18000L);// 預(yù)檢請(qǐng)求的緩存時(shí)間(秒)猎莲,即在這個(gè)時(shí)間段里,對(duì)于相同的跨域請(qǐng)求不會(huì)再預(yù)檢了
config.addAllowedMethod("
");// 允許提交請(qǐng)求的方法技即,表示全部允許
source.registerCorsConfiguration("/
*", config);
return new CorsFilter(source);
}
}

RestTemplate高并發(fā)下異常與配置

import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.DefaultResponseErrorHandler;
import org.springframework.web.client.RestTemplate;

/**

  • RestTemplate高并發(fā)下異常與配置說(shuō)明

  • 1著洼、java.util.ConcurrentModificationException

  • 2、java.net.SocketTimeoutException Connection timed out
    */
    @Configuration
    public class RestTemplateConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
    // 長(zhǎng)連接
    PoolingHttpClientConnectionManager pollingConnectionManager = new PoolingHttpClientConnectionManager();
    // 總連接數(shù)
    pollingConnectionManager.setMaxTotal(1000);
    // 同路由的并發(fā)數(shù)
    pollingConnectionManager.setDefaultMaxPerRoute(1000);

     HttpClientBuilder httpClientBuilder = HttpClients.custom();
     httpClientBuilder.setConnectionManager(pollingConnectionManager);
    

// 重試次數(shù)而叼,默認(rèn)是3次身笤,沒(méi)有開(kāi)啟
// httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(3, true));
HttpClient httpClient = httpClientBuilder.build();

    HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(
            httpClient);

// 連接超時(shí) ms
clientHttpRequestFactory.setConnectTimeout(12000);
// 數(shù)據(jù)讀取超時(shí)時(shí)間,即SocketTimeout ms
clientHttpRequestFactory.setReadTimeout(12000);
// 連接不夠用的等待時(shí)間澈歉,不宜過(guò)長(zhǎng)展鸡,必須設(shè)置,比如連接不夠用時(shí)埃难,時(shí)間過(guò)長(zhǎng)將是災(zāi)難性的
clientHttpRequestFactory.setConnectionRequestTimeout(200);
// 緩沖請(qǐng)求數(shù)據(jù),默認(rèn)值是true涤久。通過(guò)POST或者PUT大量發(fā)送數(shù)據(jù)時(shí)涡尘,建議將此屬性更改為false,以免耗盡內(nèi)存响迂。
// clientHttpRequestFactory.setBufferRequestBody(false);

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.setRequestFactory(clientHttpRequestFactory);
    restTemplate.setErrorHandler(new DefaultResponseErrorHandler());

    return restTemplate;
}

}

json數(shù)據(jù)Long為String

/**

  • @description: 返回json是轉(zhuǎn)換long為string
  • @create: 2019-08-02 17:49
    **/
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.module.SimpleModule;
    import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.converter.HttpMessageConverter;
    import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

@EnableWebMvc
@Configuration
public class WebDataConvertConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
/**
* 序列換成json時(shí),將所有的long變成string
* 因?yàn)閖s中得數(shù)字類型不能包含所有的java long值
*/
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
converters.add(jackson2HttpMessageConverter);
}

}

本文由作者pm1280415703:JAVA實(shí)驗(yàn)手冊(cè) 發(fā)布,交流群:583284584考抄!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蔗彤,隨后出現(xiàn)的幾起案子川梅,更是在濱河造成了極大的恐慌,老刑警劉巖然遏,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贫途,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡待侵,警方通過(guò)查閱死者的電腦和手機(jī)丢早,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人怨酝,你說(shuō)我怎么就攤上這事傀缩。” “怎么了农猬?”我有些...
    開(kāi)封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵赡艰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我斤葱,道長(zhǎng)慷垮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任苦掘,我火速辦了婚禮换帜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹤啡。我一直安慰自己惯驼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布递瑰。 她就那樣靜靜地躺著祟牲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抖部。 梳的紋絲不亂的頭發(fā)上说贝,一...
    開(kāi)封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音慎颗,去河邊找鬼乡恕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛俯萎,可吹牛的內(nèi)容都是我干的傲宜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼夫啊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼函卒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起撇眯,我...
    開(kāi)封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤报嵌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后熊榛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體锚国,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年来候,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了跷叉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖云挟,靈堂內(nèi)的尸體忽然破棺而出梆砸,到底是詐尸還是另有隱情,我是刑警寧澤园欣,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布帖世,位于F島的核電站,受9級(jí)特大地震影響沸枯,放射性物質(zhì)發(fā)生泄漏日矫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一绑榴、第九天 我趴在偏房一處隱蔽的房頂上張望哪轿。 院中可真熱鬧翔怎,春花似錦窃诉、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至容握,卻和暖如春宣脉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背剔氏。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工塑猖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谈跛。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓萌庆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親币旧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容