이 글은 공부목적으로 작성된 글 입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 문제상황 yml에 작성된 환경변수를 사용하기 위한 properties 클래스 생성중 해당 값을 바인딩할 수 없다는 에러가 발생하였다. 기존에 문제가 없는 것을 확인하고 푸시까지한 코드여서 상당히 당황스러웠다,.. @ConfigurationProperties(prefix = "google") @Getter @RequiredArgsConstructor public class GoogleOAuthProperties { private final String clientId; private final String clientSecret; } Properties클래스로 OAuth2 Client 정보를 가지고 있다. Client 정보는..
이글을 공부 목적으로 작성된 글입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 계기 처음 스프링 부트를 공부할떄, @Transactional에 대해서 아주 심플하게 이해했다. "db에 접근하기 위해서 @Transactional을 사용해야한다. 데이터에 변경이 @Transactional 써야한다. 만약 데이터를 단순히 조회하기 위해서는 readonly=true, 데이터를 변경하는 경우는 readonly=true를 써야한다," 특히나 repository에서는 사용하지 않고, service에서만 @Transactional를 사용하는 것을 보고 service에서만 사용하는 것이구나 라고, 경험적으로 생각했었다. 처음 스프링부트로 계발을 해보면 @Transactional를 깜박하는 실수를 많이 하곤 했다. 그..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 3장 모든 객체의 공통 메서드 3장부터는 자바의 최상위 부모 객체인 Object에 대해서 equals, hashCode, toString 과 같은 재정의 메서도들의 올바른 사용 방법에 대해 알아보자 10 equals는 일반 규약을 지켜 재정의하라 public boolean equals(Object obj) { return (this == obj); } 위코드는 object의 메소드 equals로 객체가 참조하는 인스턴스를 비교 하기 위해 사용할 수 있다. 책에서는 equals를 다음의 경우 재정의하지 않는것을 권장하고 있다.(아에 사용하는 것을 금지 해야하는 경우) 각 인스턴스가 본질적으로 교유할 경우로 값을..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 7. 다 쓴 객체 참조를 해제하라 자바에서는 garbage collection이라는 메모리 해제 툴로 인해 사용한 객체 해제에 대해 별로 신경 쓰지 않는다. 책에서는 메모리 해제에 대해 어느정도 주의할 것을 요구하고 있다. 다음 코드를 보자 public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void pus..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글톤은 인스턴스를 하나만 가질수 있는 클래스이다. 따라서 유일성이 보장되야하는 객체나 무상태(특정 클라이언트에 의존하는 필드가 없는 것) 객체에 싱글톤을 활용할 수 있다. 요새에는 스프링에서 빈과 같은 싱글톤 패턴을 지원하고 있어서 이에 대해 크게 신경쓰지 않고 있었다. 그러나 그 이전에 자바에서 싱글톤 패턴을 구현해야한다면 어떻게 해야할까? 이전 아이템 1에서 우리는 정적 팩터리 메서드를 활용하면 싱글톤으로 인스턴스를 관리할 수 있음을 확인했다. 책에서는 다음과 같은 방법으로 싱글톤 객체 구현을 추천하고 있다. 1. private 생성자 + ..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 1. 생성자 대신 정적 펙터리 메서드를 고려하라 클래스의 인스턴스를 생성할때 생성자를 사용하는 것이 일반적이다. 그러나 책에서는 생성자 대신에 정적 펙터리 메서드(static factory method)를 사용하여 인스턴스를 생성하는 방법을 제시한다. 장점을 떠나 인스턴스를 생성할때의 목적으로 생성자라는 개념이 생겨났는데 왜 정적 메서드를 사용해야 할까? 궁금증은 나중에 생각하고 계속 보자 먼저 정적 메서드를 사용했을경우, 몇가지 장점이 존재한다. 1. 메서드가 이름을 가질 수 있다. 생성자에는 매개변수와 클래스 이름만 알 수 있다. 따라서 반환되는 객체에 대해서 객체를 온전히 이해하기 힘들다는 것이 책의 입..