게시글

인스턴스를 막으려거든 Private 생성자를 사용하라 Java에는 Arrays, Collections와 같은 유틸 클래스들이 있다. 이러한 유틸 클래스들은 대부분 정적 메서드 ( 혹은 정적 팩터리 메서드 ) 만 제공하는데, 이러한 클래스들은 인스턴스화 할 필요도 없고 인스터스 해서도 안된다. 그렇다면 이러한 클래스들은 유틸 클래스로 만들지 못하는게 가장 안전한데, 자바에서는 이를 쉽게 구현할 수 있다. 자바 특성상 클래스를 설계할때 생성자가 하나도 없다면 기본 public 생성자를 만들어 클래스를 인스턴스화 한다. 이 말은 설계시 생성자를 하나만이라도 생성하면 기본 public 생성자를 만들지 않는데, effective java에서는 private 생성자를 만들어 클래스를 인스턴스화는걸 막으라고 설명하고..
싱글턴 ( Singleton ) 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말하며 만들어진 값은 오직 시스템상에서 하나만 존재해야한다. 싱글턴으로 만들고 사용하기 싱글턴으로 만드는 방식은 크게 세가지 방식이 있다. 1. public static 맴버 변수 사용 public class Single { public static final Object INSTANCE = new Object(); private Single() { } } public class Main { public static void main(String[] args) { Object obj1 = Single.INSTANCE; Object obj2 = Single.INSTANCE; Object obj = new Object..
빌더 패턴 ( Builder Pattern ) 정척 팩터리 메서드와 생성자를 이용한 객체 생성 방식의 문제점 정적 팩터리 메서드를 이용해 객체 생성, 생성자를 이용한 객체 생성 방식에는 큰 문제가 하나있다. 어떤 객체는 상황에따라 받는 매개 변수의 형태가 다른 객체가 있을 수 있다. public class Some { private boolean value1; private boolean value2; private String value; public Some(String value) { this.value = value; } public Some(boolean value1, boolean value2) { this.value1 = value1; this.value2 = value2; } public ..
정적 팩터리 메서드 (static factory method) 클래스는 생성자와 별도로 정적 팩터리 메서드를 제공 할 수 있다. 여기서 말하는 정적 팩터리 메서드는(static factory method) 디자인 패턴에서의 팩토리 메서드 패턴과 다르다. 여기서 말하는 정적 팩터리 메서드 패턴은 생성자를 통해 객체를 생성하는게 아닌 메서드(static method)를 이용해 객체를 생성하는 방식이다. 장단점을 알아보자. 장점 1. 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. public class ErrorResponse { String message; int status; private ErrorResponse(ErrorCode er..
책을 이용해 Spring Security를 공부했는데 버전 차이로인해 많은 어려움을 겪엇다. 공부했던 책은 2020년 11월에 출판된 책이였고 이 당시 부트는 버전 2버전대 시큐리티 버전은 5버전대를 사용하여 내가 학습할 당시 버전과 차이가 많이나 책을 읽고 공부하는데 많은 어려움이 있었다. 이 글은 그중에서도 WebSecurityConfigurerAdapter로 인해 겪은 문제과 해결법을 공유하기 위해 작성했다. 개발 환경 Spring Boot 3.2.1 Spring Security 6.2.1 WebSecurityConfigurerAdapter는 어디에? 책에서는 http security 설정 하기 위해서 WebSecurityConfigurerAdapter를 상속 cofigure 메소드를 오버라이딩해 ..
· cicd
계기 회사에 입사하고 한 서비스를 유지보수 하는일을 맡았다. 근데 이 서비스를 관리 하다보니 불편한점이 하나 있었는데… 요구 사항을 적용하고 다시 배포하는 작업이 너무 너무 귀찮은 것이다. 현재 이 서비스를 배포하기 위해서는 서버 컴퓨터에 앉아 저장소에서 최신 코드를 땡겨와 빌드 한다음 빌드된 파일을 이용해 서비스를 실행시켜야 하는데 이 작업이 너무나도 시간이 오래 걸리고 귀찮은것이다. 이 과정은 CI/CD 도구를 이용하여 충분히 자동화 할 수 있다 생각하여, 회사에 CI/CD 환경이 구축되어 있는지 물어봤지만 구축된게 없다고 말씀하셨다... CI/CD 환경을 구축하면 나 뿐만 아니라 다른 사원들도 편할꺼 같아서 허락을 받은다음 직접 CI/CD 도구를 선정하고 구축하기로 결심했다. CI/CD 도입 장점 ..
· react
계기 입사하고 전임자가 React로 만들어둔 웹 서비스를 내가 유지보수 맡게 되었다. 어느날 이 서비스를 구글에 검색을 해봤는데 아에 뜨질 않는거다. 그래서 뭐가 문제인지 보려고 사이트에서 접속해 lighthouse(브라우저 성능 측정 도구)를 돌려보니 검색 엔진 최적화 점수가 좀 많이 낮게 나왔다. 문제점 lighthouse는 어느 부분에 문제가 있고 어떻게 개선 해야하는지 알려준다. 서비스에서 점수가 낮게 나온 이유는 그 당시 상세하게 캡처 하지 못했지만 2가지 문제점이 있었다. 1. robots.txt 파일이 없음 2. a 태그에 href 값이 없음 robots.txt가 뭘까 ? 검색 엔진 사이트는 자체 크롤봇을 이용해서 사이트의 정보를 수집하고 검색 결과에 반영한다. 구글은 Googlebot 네이..
dobidugi
'분류 전체보기' 카테고리의 글 목록 (3 Page)