작성
·
130
0
강의자료 pdf 19page 설명하실 때
WebSecurity는 HttpSecurity에서 생성한 SecurityFilterChain을 SecurityBuilder에 저장한다고 하셨는데,
SecurityBuilder는 인터페이스인데 어떻게 저장하는지 이해가 안됩니다.
원래 변수나 데이터들은 객체에 저장하는게 아닌가요?
답변 2
0
SecurityBuilder 는 인터페이스이기 때문에 익명클래스로 생성하게 되면 마치 객체 처럼 접근이 가능합니다
new SecurityBuilder(){
O build(){
new SecurityFilterChain()
}
}
이렇게 하면 SecurityFilterChain 객체를 얻을 수 있습니다.
물론 위의 코드 자체를 어딘가 설정해 놓고 특정한 시점이 되었을 때 build() 를 호출하면 되겠죠
일반적으로 람다 형식으로 많이 하게 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 답변 드리겠습니다. 보통 인터페이스는 구체적인 구현을 정의하지 않고 메서드의 시그니처만을 선언합니다. 그렇기 때문에 인터페이스 자체에 데이터를 저장할 수는 없습니다. 하지만, SecurityBuilder
인터페이스는 구현 클래스를 통해 실제 데이터를 저장하는 구현체가 있을 것입니다. 예를 들어, SecurityBuilder
를 구현하는 클래스 내부에서는 해당 인터페이스가 정의한 메서드를 구현하고 실제로 데이터를 저장하는 로직이 포함될 수 있습니다. 따라서, SecurityFilterChain
을 SecurityBuilder
에 저장한다는 표현은, SecurityBuilder
인터페이스를 구현한 어떤 클래스가 SecurityFilterChain
객체를 내부적으로 저장하고 관리한다는 의미로 해석할 수 있습니다.
본 내용과 직접적으로 관련된 정보나 예시는 제공된 정보에 포함되지 않았습니다만, 일반적인 소프트웨어 개발 원리에 근거하여 설명드렸습니다. 스프링 시큐리티의 구체적 구현과 관련하여 더 깊이 이해하고자 하신다면, 스프링 시큐리티의 공식 문서나 스프링 부트 관련 참고 문헌을 추가로 참고하시기 바랍니다.