Spring boot开发笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liufang1991/article/details/79105727

1.自动扫描配置不需要扫描某个包或者某个类,下面的写法不会扫描org.xxx.yyy.*下的包以及MyClassToExclude.class

@ComponentScan(            
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.xxx.yyy.*"),
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = MyClassToExclude.class) })


2. Multipart上传文件,过一段时间以后将会出现org.springframework.web.multipart.MultipartException,解决办法在大神的博客中,增加-Djava.io.tmpdir启动参数,或者修改程序new MultipartConfigFactory().setLocation("/app/pttms/tmp"),我采用的是在配置文件中增加server.tomcat.basedir=${user.home}/deployer/tomcat

3.弹出浏览器自带的用户名和密码框, 输入用户名和密码以后每次请求在Header中都会自动带上Authorization: Basic Base64.encode("username:password")

	public static void ret401(HttpServletRequest request, HttpServletResponse response){
		String serverName = request.getServerName();
		response.setStatus(401);
		response.setHeader("Cache-Control", "no-store");
		response.setDateHeader("Expires", 0);
		response.setHeader("WWW-authenticate", "Basic Realm=\"" + serverName + "\"");
	}

4.RestTemplate的坑

RestTemplate会对url会自动进行编码,如果url的参数已经编码过就会出现重复编码, 并且带有特殊符号的参数自动编码的结果和URLEncoder.encode编码的结果并不是完全一致

 解决办法如下: 如果url的参数已经Encode过了则不再重新编码, UricomponentsBuilder.fromHttpUrl(url).build(true).toUri()或者new URI(url)

UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
// url的参数已经编码过了,所以不需要再次编码
ResponseEntity<String> responseEntity = restTemplate.getForEntity(builder.build(true).toUri(), String.class);

或者

ResponseEntity<String> responseEntity = restTemplate.getForEntity(new URI(url), String.class);

猜你喜欢

转载自blog.csdn.net/liufang1991/article/details/79105727