백기선(인프런 강의)
-
4. 인스턴스화를 막으려거든 private 생성자를 사용하라백기선(인프런 강의)/이펙티브자바 2023. 7. 3. 15:08
https://github.com/rlawls1991/effective_java/tree/main/effective/src/main/kotlin/com/effective/chapter/_4 코틀린은 쉽게 사용이 가능하다... 코틀린짱.. object 쓰면 알아서 싱글톤형태로 되기 때문에 편하다 설명 정적 메서드만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한 클래스 가 아니다. 추상 클래스로 만드는 것으로는 인스턴스화를 막을 수 없다. private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있다. 생성자에 주석으로 인스턴스화 불가한 이유를 설명하는 것이 좋다. 상속을 방지할 때도 같은 방법을 사용할 수 있다.
-
3. 생성자나 열거 타입으로 싱글턴임을 보증하라.백기선(인프런 강의)/이펙티브자바 2023. 7. 2. 15:58
https://github.com/rlawls1991/effective_java/tree/main/effective/src/main/kotlin/com/effective/chapter/_3 private 생성자 + public static final 필드 장점 간결하고 싱글턴임을 API에 들어낼 수 있다. 단점 싱글톤을 사용하는 클라이언트 테스트하기 어려워진다. 리플렉션으로 private 생성자를 호출할 수 있다. 단점 3, 역직렬화 할 때 새로운 인스턴스가 생길 수 있다. private 생성자 + 정적 팩터리 메서드 장점 API를 바꾸지 않고도 싱글턴이 아니게 변경할 수 있다. 정적 팩터리를 제네릭 싱글턴 팩터리로 만들 수 있다. 정적 팩터리의 메서드 참조를 공급자(Supplier)로 사용할 수 있다...
-
2. 생성자에 매개변수가 많다면 빌더를 고려하라백기선(인프런 강의)/이펙티브자바 2023. 6. 28. 13:06
빌더 패턴이란? 설명 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법이다. 해당 패턴을 사용하면 복잡한 객체를 만드는 프로세서를 독립적으로 분리가 가능하다. 근데.. 코틀린에서는 빌더 패턴 사용하지 않고 클래스의 생성자에 바로 매개변수를 넣어 클래스를 정의 가능.. (추가적으로 빌더 패턴을 권장하지 않음) 아래의 페이지에 코틀린으로 빌더 패턴 고려한 것과 자바코드 버전을 비교 할 수 있다. 코틀린짱 https://github.com/rlawls1991/effective_java/tree/main/effective/src/main/kotlin/com/effective/chapter/_2/hierarchicalbuilder
-
1. 생성자 대신 정적 팩터리 메서드를 고려하라.백기선(인프런 강의)/이펙티브자바 2023. 6. 27. 16:07
장단점 장점 이름을 가질 수 있다. 동일 한 시그니처의 생성자를 두개 가질 수 없다. 호출될 때마다 인스턴트를 새로 생성하지 않아도 된다. Boolean.valueOf 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다. 인터페이스 기반 프레임워크, 인터페이스에 정적 메소드 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다 EnumSet 정적 팩터리 메소드를 작성하는 시점에는 반환할 객체의 클래스가 조회하지 않아도 된다. 사용자 제공자 프레임워크 단점 상속을 하려면 pulbic이나 proteted 생성하기 필요하니 정적 팩터리 메소드만 제공하면 하위 클래스를 만들 수 없다. 정적 팩터리 메소드는 프로그래머가 찾기 어렵다. 열거 타입 상수 목록을 담을 수 있는 데이터 타입 특정한 변수..
-
REST API 보안 적용 - 2백기선(인프런 강의)/스프링 기반 REST API 개발 2021. 1. 29. 10:46
공부중인 GIT 주소 위 GIT주소에 개발 step 별로 commit 해두었다. 진행 과정 이벤트 조회 및 수정 REST API 개발 Account 도메인 추가 스프링 시큐리티 적용 예외 테스트 스프링 시큐리티 기본 설정 스프링 시큐리티 폼 인증 설정 스프링 시큐리티 OAuth2 인증 서버 설정 리소스 서버 설정 문자열을 외부 설정으로 빼내기 이벤트 API 점검 현재 사용자 조회 출력값 제한하기 5. 스프링 시큐리티 폼 인증 설정 @Override public void configure(HttpSecurity http) throws Exception { http .anonymous() //익명 사용자 허용 .and() .formLogin() // form인증 허용 .and() .authorizeReque..
-
REST API 보안 적용 - 1백기선(인프런 강의)/스프링 기반 REST API 개발 2021. 1. 27. 16:50
공부중인 GIT 주소 위 GIT주소에 개발 step 별로 commit 해두었다. 진행 과정 이벤트 조회 및 수정 REST API 개발 Account 도메인 추가 스프링 시큐리티 적용 예외 테스트 스프링 시큐리티 기본 설정 스프링 시큐리티 폼 인증 설정 스프링 시큐리티 OAuth2 인증 서버 설정 리소스 서버 설정 문자열을 외부 설정으로 빼내기 이벤트 API 점검 현재 사용자 조회 출력값 제한하기 1. Account 도메인 추가 2. 스프링 시큐리티 적용 스프링 시큐리티 스프링 5 부터는 웹이 2종류가 됨 Web flux Web servlet (이번 강의에서 이기준으로 설명) SecurityInterceptor 웹 요청 같은 경우는 srpingFilterChain이 연관이 되어있있음 웹 시큐리티 (Filt..
-
이벤트 조회 및 수정 REST API 개발백기선(인프런 강의)/스프링 기반 REST API 개발 2021. 1. 27. 14:06
공부중인 GIT 주소 위 GIT주소에 개발 step 별로 commit 해두었다. 진행 과정 이벤트 조회 및 수정 REST API 개발 테스트용 DB와 설정 분리 API 인덱스 만들기 이벤트 목록 조회 API 구현 이벤트 CRUD API 구현 이벤트 수정 API 구현 이벤트 삭제 API 구현 이벤트 조회 API 구현 이벤트 생성 API 구현 테스트 코드 리팩토링 1. 테스트용 DB와 설정 분리 테스트 할 때는 계속 H2를 사용해도 좋지만 애플리케이션 서버를 실행할 때 PostgreSQL을 사용하도록 변경하자. /scripts.md 참고 1-1. PostgreSQL 드라이버 의존성 추가 org.postgresql postgresql 1-2. 도커로 PostgreSQL 컨테이너 실행 docker run --n..