inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 시큐리티

6) 웹 기반 인가처리 실시간 반영하기

UrlSecurityMetadataSource 클래스의 reload() 메서드 질문이 있습니다!

343

작성자 없음

작성한 질문수 0

0

좋은 강의 잘 보고 있습니다. 감사합니다.

섹션 5. "실전프로젝트 - 인가 프로세스 DB 연동 웹 계층 구현"의 "6) 웹 기반 인가처리 실시간 반영하기"

강의를 보다 의문이 생겨 질문을 남기게 되었습니다.

UrlSecurityMetadataSource 클래스에 다음과 같은 reload() 함수가 있습니다.

여기서 "securityResourceService.getResourceList()"의 반환값과 "requestMap"의 타입이 똑같으니

requestMap = securityResourceService.getResourceList();

으로 바로 객체를 할당하면 될 것 같았는데,

Iterator를 사용하여 put 하시는 것이 성능상의 문제나 다른 이슈가 있어서 이렇게 작성을 하신건지 의문이 들었습니다.

새로운 List를 바로 할당하지 않고, 기존 List 객체를 유지하신 이유가 궁금합니다!

감사합니다.

// UrlSecurityMetadataSource 클래스
public void reload() {
	LinkedHashMap<RequestMatcher, List<ConfigAttribute>> reloadedMap = securityResourceService.getResourceList();
	Iterator<Map.Entry<RequestMatcher, List<ConfigAttribute>>> iterator = reloadedMap.entrySet().iterator();

	requestMap.clear();

	while (iterator.hasNext()) {
		Map.Entry<RequestMatcher, List<ConfigAttribute>> entry = iterator.next();
		requestMap.put(entry.getKey(), entry.getValue());
	}
}

 

java spring-boot spring-security

답변 1

-1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

UrlSecurityMetadataSource 클래스의 reload() 메서드 내부에서 새로운 List를 할당하지 않고, 기존에 존재하는 List 객체를 유지한 이유는 성능과 관련된 문제 때문입니다.

만약에 새로운 List 객체를 생성하여 할당한다면 참조하는 위치가 다르기 때문에, 기존에 할당되어 있던 List 객체가 가비지 컬렉션이 되어야 하고, 이 때문에 성능에 영향을 미칠 수 있습니다.

하지만 기존에 존재하는 List 객체 내에서 새로운 데이터를 추가하는 경우에는 가비지 컬렉션이 발생하지 않아서, 성능 상의 이점을 가져올 수 있습니다.

따라서 UrlSecurityMetadataSource 클래스에서 Iterator를 사용하여 기존 List 객체 내에서 새로운 데이터를 추가한 것입니다.

제가 도움을 드린 것이 맞는지요? 추가로 궁금한 점이 있으시면 얼마든지 물어봐주세요. 감사합니다.

시큐리티 공부 버전 질문

0

175

1

[해결 방법] MethodSecurityConfig.customMethodSecurityMetadataSource() 호출하지 않는 이슈

0

186

1

AbstractSecurityInterceptor.class.beforeInvocation()를 2번 실행하는 경우

0

174

1

강의 코드가 왜이렇게 뒤죽박죽인가요...

0

249

1

메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..

0

236

1

파라미터값이 넘어가지 않습니다 ....

0

374

1

security filterChain 설정 질문이 있습니다.

0

332

1

소스 부분 질문 드립니다.

0

208

2

섹션4 7번 강의 문제가 있는거 같네요.

0

344

2

파일이 수시로 이름이 바껴있네요 ㄷㄷ

0

304

1

HttpSessionSecurityContextRepository를 사용안하는 문제

0

555

2

error , exception 이 잘 안됩니다.

0

282

2

thymeleaf tag 질문합니다.

0

196

2

버전업하면서 deprecated된 것들이 너무많아요

0

478

1

spring security 패치 관련

0

437

1

모바일을 사용할때 토큰말고 세션

0

846

2

DB 연동한 인가 부분에 대한 질문입니다!

0

264

1

Ajax방식도 똑같이 Session방식을 사용하는건가요?

0

307

1

Config 파일 생성 시 질문이 있습니다.

0

225

1

강사님 몇일동안 구글 검색만 100개 했는데도 이유를 모르겠습니다..

1

429

2

403 에러 뜹니다.

0

813

2

login_proc의 존재에 대한 간략한 설명입니다

0

276

1

top.html에 로그인 링크를 만들어서 로그인을 해봤습니다

0

283

2

안녕하세요. DB에 저장될 때 이해 안 가는 값이 있어서 질문드립니다!

0

189

1