인프런 커뮤니티 질문&답변

최성욱님의 프로필 이미지

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

WebSecurity / HttpSecurity

WebSecurity관해여 질문드립니다

작성

·

130

0

강의자료 pdf 19page 설명하실 때
WebSecurity는 HttpSecurity에서 생성한 SecurityFilterChain을 SecurityBuilder에 저장한다고 하셨는데,
SecurityBuilder는 인터페이스인데 어떻게 저장하는지 이해가 안됩니다.
원래 변수나 데이터들은 객체에 저장하는게 아닌가요?

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

SecurityBuilder 는 인터페이스이기 때문에 익명클래스로 생성하게 되면 마치 객체 처럼 접근이 가능합니다

new SecurityBuilder(){

O build(){

new SecurityFilterChain()

}

}

이렇게 하면 SecurityFilterChain 객체를 얻을 수 있습니다.

물론 위의 코드 자체를 어딘가 설정해 놓고 특정한 시점이 되었을 때 build() 를 호출하면 되겠죠

일반적으로 람다 형식으로 많이 하게 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다.

님의 질문에 답변 드리겠습니다. 보통 인터페이스는 구체적인 구현을 정의하지 않고 메서드의 시그니처만을 선언합니다. 그렇기 때문에 인터페이스 자체에 데이터를 저장할 수는 없습니다. 하지만, SecurityBuilder 인터페이스는 구현 클래스를 통해 실제 데이터를 저장하는 구현체가 있을 것입니다. 예를 들어, SecurityBuilder를 구현하는 클래스 내부에서는 해당 인터페이스가 정의한 메서드를 구현하고 실제로 데이터를 저장하는 로직이 포함될 수 있습니다. 따라서, SecurityFilterChainSecurityBuilder에 저장한다는 표현은, SecurityBuilder 인터페이스를 구현한 어떤 클래스가 SecurityFilterChain 객체를 내부적으로 저장하고 관리한다는 의미로 해석할 수 있습니다.

본 내용과 직접적으로 관련된 정보나 예시는 제공된 정보에 포함되지 않았습니다만, 일반적인 소프트웨어 개발 원리에 근거하여 설명드렸습니다. 스프링 시큐리티의 구체적 구현과 관련하여 더 깊이 이해하고자 하신다면, 스프링 시큐리티의 공식 문서나 스프링 부트 관련 참고 문헌을 추가로 참고하시기 바랍니다.