@SpringBootApplication 어노테이션의 exclude 속성은 특정 자동 설정 클래스를 제외하고 Spring Boot 애플리케이션을 구성할 때 사용됩니다. 일반적으로 이 속성은 특정 자동 설정을 비활성화하려는 경우에 사용됩니다.
SecurityAutoConfiguration 클래스는 Spring Security의 자동 구성을 활성화하는데 사용되는 자동 설정 중 하나입니다.
그런데, 때때로 Spring Security를 사용하지 않거나 커스터마이징해야 하는 경우가 있습니다.
이때 exclude 속성을 사용하여 SecurityAutoConfiguration을 비활성화할 수 있습니다.
즉, @SpringBootApplication(exclude = SecurityAutoConfiguration.class)을 사용하면 Spring Security의 자동 설정을 비활성화하고 사용자 정의된 보안 구성을 사용할 수 있습니다.
이것은 Spring Boot 애플리케이션의 보안 설정을 사용자가 직접 구성하고자 할 때 유용합니다.
Spring Boot 웹 애플리케이션에 Security Starter를 추가하면 자동으로 웹 보안이 적용됩니다. 이는 모든 요청에 대한 인증 요청, 기본 사용자 및 패드워드 생성 등이 포함됩니다.
이런 자동설정 역할을 하는 클래스가 SecurityAutoConfiguration 클래스 입니다. 그래서 자동 설정을 끄고자 할 때는 @SpringBootApplication 애노테이션에 SecurityAutoConfiguration 를 읽어 들이지 않도록 설정만 하면 됩니다.
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class SpringBootSecurityApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootSecurityApplication.class, args);
}
}
자동설정을 끄면 커스텀 보안 서비스를 사용해야 한다던가 기존에 있던 시스템과 통합할 때는 유용할 수 있습니다.
그러나 여러가지로 불편한 점이 있는데, 이 상태에서 WebSecurity를 설정하려면 @EnableWebSecurity 애노테이션를 필수로 사용해야 하고, Security 설정을 개발자가 직접 모든 것을 다 해야 합니다. 또한 다른 자동 설정 클래스에서 SecurityAutoConfiguration 가 필요하다면 문제가 될 수 있습니다.
그래서 끄는 것 보다는 기본 설정을 무시하고 개발자가 지정한 설정을 우선 사용하도록 하는 것이 대부분의 경우 유용할 것입니다. 스프링 부트는 사용자 정의 클래스를 발견하면 당연하게도 자동 설정보다 우선하여 동작하게 되어있습니다.
참조
https://thecodinglog.github.io/spring/security/2020/01/10/disable-security-auto-config.html
'TIL > Spring' 카테고리의 다른 글
Principal 객체 (0) | 2024.01.23 |
---|---|
consumes와 produces의 차이 (0) | 2024.01.22 |
빌드 관리 도구(maven, gradle의 차이) (0) | 2023.08.18 |
day81-spring (0) | 2023.02.09 |
day80-spring (0) | 2023.02.08 |