백엔드 2

[Effective Java : Item 4] 인스턴스화를 막으려거든 private 생성자를 사용하라

개요 프로젝트 내에 정적 메서드와 정적 필드만을 담은, 예를 들면 java.lang.Math나 java.util.Arrays 같은 클래스를 생성하고 싶을 수 있다. 이러한 유틸리티 클래스는 인스턴스로 만들어 사용하고자 하는 것이 아니지만, 생성자를 명시하지 않으면 컴파일러가 자동으로 매개변수가 없는 기본 생성자를 만들어주기 때문에 인스턴스화될 여지가 있다. 따라서 생성자를 private으로 선언해줌으로써 인스턴스화를 방지할 수 있다. 아이템 1에서 소개되었던 내용이기도 하다. 만약 클래스를 추상 클래스로 만든다면 인스턴스화되지 않기는 하지만, 이는 완벽하게 인스턴스화를 막는 방법이 아니다. 클래스를 상속해서 인스턴스화 하면 되기 때문이다. 그리고 이런 방법은 명시적인 설명이 없다면 오히려 상속해서 사용하..

Backend/Java 2024.01.30

[Spring Security] 스프링 시큐리티 기본 API 및 Filter 이해 - 2

익명사용자 인증 필터 : AnonymousAuthenticationFilter 인증 Flow Spring Security는 인증되지 않은 사용자의 접근에 대해 자동으로 익명 사용자 인증 객체를 만들어서 처리한다. 익명사용자를 Authentication이 null인 상태로 인식하는 것이 아닌, 익명사용자 인증 객체를 만들어서 사용 익명사용자와 인증사용자를 구분하여 처리하기 위함 화면에서 인증 여부를 구현할 때 isAnonymous()와 isAuthenticated() 로 구분하여 사용 (logout을 할 때 등) 인증 객체를 세션에 저장하지 않음 익명사용자 객체를 통해 특별한 기능을 수행한다기 보다는, 스프링에서 익명사용자 또한 기존 인증 체계에 맞게 구조적으로 관리할 수 있도록 하는 것이 목표. 아무런 ..

Backend/Spring 2022.11.23
반응형