생성자는 동일한 시그니처로는 여러개의 생성자를 만들 수 없다. 아래 예제 코드처럼 정적 팩토리 메서드를 통해 동일한 시그니처로 특정한 경우를 셋팅한 객체를 생성할 수 있는 메서드를 만들 수 있다.
public class Order {
private boolean prime;
private boolean urgent;
private String orderName;
public static Order primeOrder(String orderName) {
Order order = new Order();
order.prime= true;
order.urgent = false;
return order;
}
public static Order urgentOrder(String orderName) {
Order order = new Order();
order.prime= false;
order.urgent = true;
return order;
}
}
생성자로는 인스턴스의 생성을 매번 새롭게 정의하게됨
하나의 인스턴스만 생성하고 싶을 경우 정적 팩토리 메서드를 통해 하나의 인스턴스가 생성되도록 보장할 수 있다.
public class Settings {
private boolean useAutoStreering;
private boolean userABS;
private Settings() {}
private static final Settings SETTINGS = new Settings();
public static Settings newInstance() {
return SETTINGS;
}
}
public class Main {
public static void main(String[] args) {
System.out.println("setting1 : " + Settings.newInstance());
System.out.println("setting2 : " + Settings.newInstance());
System.out.println("setting3 : " + Settings.newInstance());
}
}
사용자가 정보를 입력하면 AuthenticationFilter가 정보를 가로챈다.
스프링 부트에서는 @EnableAutoConfiguration을 이용해서 SecurityFilterAutoConfiguration클래스를 로드하고 SpringSecurityFilterChain 빈을 등록한다.
SpringSecurityFilterChain은 여러 필터 리스트를 갖고있는데 Filter들이 적용될 때 list 순서대로 적용된다.
FilterChain에는 여러가지 종류가 있는데 프로젝트에 사용된 필터만 살펴본다.
스프링에 적용된 템플릿 기법 학습
❓DB관련 코드에서 예외사항에 대한 예외처리가 안되어있다면 어떻게 될까?
예외가 발생하면 사용한 자원에 대한 반납이 이루어지지 않는다. 이는 일정한 커넥션 개수를 유지하는 커넥션 풀에 자원이 부족한 현상을 초래할 수 있다.
제어권
함수의 코드나 프로세스의 실행 흐름을 제어할 수 있는 권리
OS의 커널에서 따온 개념으로 I/O동작에서 설명하는 부분
[참고]
이펙티브 자바 - 아이템1
https://jeong-pro.tistory.com/205
https://medium.com/@greekykhs/springsecurity-part-3-spring-security-flow-7da9cc3624ab