Spring Security 는 초기 설정 때 인증이나 인가와 관련된 여러가지 작업들을 한다. 여기에는 여러가지 객체, 설정 등 기타 여러가지 일을 하는데 이런 일들을 종합적으로 처리하는 SecurityBuilder, SecurityConfigurer 라는 두개의 클래스들이 있다. 따라서 이 두 종류의 설정 클래스를 잘 이해하고 있으면 Spring Security 의 초기화 작업들에 대해 어느 정도는 이해한 상태에서 기능을 알 수 있을 것. 따라서 핵심적이고 기초적인 내용을 이해하는 건 전체적인 Spring Security 를 이해하는데 도움이 된다.
SecurityBuilder 는 빌더 클래스로서 웹 보안을 구성하는 빈 객체와 설정클래스들을 생성하는 역할을 하며 대표적으로 WebSecurity, HttpSecurity 가 있다.
따라서 구조를 함께 살펴보도록 하자.
SecurityBuilder, SecurityConfigurer 이렇게 나누어져있는데 먼저 SecurityBuilder가 SecurityConfigurer 클래스를 참조하고 있다. SecurityBuilder 클래스가 SecurityConfigurer 클래스를 참조하며 초기화 작업을 진행시키고 각각 설정 클래스의 구현체들이 있는데, 이 구현체들은 우리가 앞으로 계속 살펴볼 클래스들이며 구조는 Security Builder 클래스가 이런 설정 클래스를 생성한 다음 설정 클래스를 가지고 있는 여러가지 기능들을 진행시키면서 초기 작업을 이끌어 가는 것. 그래서 이 설정 클래스 안에서 인증이나 인과와 관련된 여러가지 초기 작업들이 이루어진다는 것을 의미한다.
앞에서 살펴본 구조를 조금 더 구체적으로 살펴보도록 하자.

AutoConfiguration, 자동설정에 의해 제일 처음에 Security Builder 클래스를 생성한다. 이건 자동 설정에서 만들어지는 것. Builder 클래스를 생성한 다음 이 Builder 클래스는 어떤 역할을 하냐면 웹 보안을 구성하는 빈 객체와 설정 클래스를 생성한다 했었는데 따라서 이 빌드 클래스가 설정 클래스를 생성하게 된다. 즉, SecurityConfigurer 타입의 클래스들을 생성하는 것. 그런데 이 SecurityConfiguer 는 내부적으로 init 메소드와 configure 메소드라는 두 개의 메소드를 가지고 있다. 그리고 매개변수로 빌드를 받는다. 여기서 빌드란 SecurityBuilder 객체를 의미한다. 그 후 이 클래스는 이 두 개의 메소드를 통해 초기화 작업을 진행시키며 필터도 생성할 것. 인증/인가와 관련된 여러가지 설정들을 진행하고 초기화 관련된 여러 작업 또한 하게 된다.

구체적으로는 SecurityBuilder 클래스에 구현체 중 가장 핵심적인 역할을 하는 HTTP Security 가 있다. 그래서 이 HTTP Security 가 처음에 자동설정에서 생성되고 빈이 될 것. 빈이 생성 되고, 이 빈 객체가 SecurityConfigure 타입의 많은 설정 클래스를 생성하는 것. 그리고 이 클래스는 init 메소드와 configure 메소드라는 두 개의 메소드가 있다고 했다. 그리고 builder 는 결국 인자로 HTTPSecurity 가 들어갈 것. 그리고 이 init 과 configurer 안에서 초기화 작업들이 다 일어난다. 그 중에 이러한 필터들을 생성한다. 필터 외에도 여러 객체를 생성하는데 대표적인 것이 필터. 각각의 configurere 들마다 필터가 있다. 예를 들어 로그아웃 Configurer 는 로그아웃 필터를 생성하는 식이다. 그렇기에 우리가 Spring Security 에서 결론적으론 필터를 통해 인증과 인가와 관련된 여러가지 일들을 하는데 이 처리를 하기에 앞서 이런 초기 과정에서 어떤 설정을 하게 되는 것들을 우리가 많이 알게 되면 전반적인 Spring Security 의 흐름을 이해하는데 더 도움이 될 것. 처음부터 모든 설정을 다 알려고 하기보다는 필요할 때마다 한 번씩 Configure 설정 클래스를 통해 어떤 일들이 일어나는지에 대해 살펴보는 것은 굉장히 의미 있다.