Maven Central 포털의 Gradle 플러그인을 사용한 방식으로 라이브러리를 배포하는 방법을 정리한 글입니다.2024년 3월 12일부터 issues.sonatype.org는 폐쇄되어 모든 등록은 중앙 포털을 통해 이루어지도록 변경되었습니다. 기존 Nexus repository(OSSRH)로 올리는 방식을 사용하던 사용자는 기존 방식을 그대로 사용할 수 있지만, 신규 사용자라면 Maven Central을 통해서 라이브러리를 배포해야 합니다.1. Maven Central 계정 설정따로 도메인이 존재하는 경우 지침서에 따라 Namespace를 등록 하시면 됩니다. 참고로 github는 io.github.사용자이름 형식입니다.아래의 공식 홈페이지에 github 소셜 로그인을 하면 번거로운 작업 없이 Na..
백엔드/Java
싱글톤을 구현해야 하는 상황 하나만 유지하면 좋은 경우 반드시 하나만 유지해야 하는 경우 (여러개가 생성된다면 문제가 생기는 경우) 첫번째 방법 private 생성자 + public static final 필드를 사용하는 방법 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {} } 장점 간결하고 싱글턴임을 API에 드러낼 수 있다. 단점 싱글톤을 사용하는 클라이언트 코드를 테스트하기 어려워진다. 리플렉션으로 private 생성자를 호출할 수 있다. // 리플렉션을 통해 싱글톤을 깨뜨리는 방법 예제 public static void main(String[] args) { try { Construct..
Long 타입 값 비교를 하다 보면 true를 제대로 반환할 때도 있고 false를 반환하는 경우도 만난다. 이유 Java는 -128 ~ 127 범위의 Long , Integer 객체는 내부적으로 캐싱하여 동일한 객체로 취급 하기 때문에 == 비교를 해도 true가 나온다. // -128 ~ 127 은 == 로 비교가능 Long a = 127L; Long b = 127L; Long _a = -128L; Long _b = -128L; boolean resultA = a == b; boolean resultB = _a == _b; System.out.println("a == b = " + resultA); // a == b = true System.out.println("_a == _b = " + resul..
“코딩으로 학습하는 GoF의 디자인 패턴” 강의를 보며 간략하게 정리한 내용입니다. 프로토타입(Prototype) 패턴이란? 객체 생성을 위해 클래스에서 인스턴스를 생성하는 대신, 기존에 생성된 객체를 복제하여 새로운 객체를 생성하는 패턴 Object 의 clone() 메서드를 통해 구현할 수 있다 clone() 조건 x.clone() ≠ x // 다른 인스턴스가 새로 만들어진거라 같지 않음 x.clone().getClass() == x.getClass() x.clone().equals(x) // 데이터는 같기 때문에 true Cloneable 인터페이스를 구현해야함 프로토타입 패턴을 사용하는 이유 동일한 작업을 반복하지 않아도 됨(리소스 소모가 심한 작업일 경우 복제해 사용하면 이득을 볼 수 있음) D..
빌더(Builder) 패턴이란? 빌더(Builder) 패턴은 객체를 생성하는 과정을 단순화하기 위한 디자인 패턴 Builder에 인스턴스 생성방법을 스탭 별로 만들어 놓은 인스턴스를 정의하고, 최종적으로 인스턴스를 받아올 수 있는 getXXX(); 라는 메서드를 구현하는 구현체를 만들어 객체를 생성하는 방법 빌더 패턴을 사용하는 이유 필요한 데이터만 설정 가능하다 유연성을 확보할 수 있다 가독성을 높인다 변경 가능성을 최소화할 수 있다 빌더패턴을 사용하는 이유와 구현 코드를 알아보자 예제 코드 예행 계획을 만드는 여행계획 클래스가 있다 public class 여행계획 { private String title; //여행 이름 private int nights; // 몇박 private int days;//..
팩토리 메서드 패턴과 추상 팩토리 패턴 차이점 추상 팩토리(Abstract factory) 패턴이란? 관련있는 여러 객체를 만들어주는 추상화된 형태로 정의한 인터페이스 팩토리 메서드 패턴과 굉장히 흡사하지만 팩토리를 사용하는 클라이언트가 추가된 패턴 예제 코드 이전 팩토리 메서드에서 Soju 클래스에 Design 클래스가 추가되었다고 가정한다면 public class Soju { private String name; private Design design; public Design getAddress() { return design; } public void setAddress(Design design) { this.design = design; } public String getName() { retu..