목록JAVA (38)
개발 기록
(3) private 생성자나 열거 타입으로 싱글턴임을 보증하라 *싱글턴 : 인스턴스를 오직 하나만 생성할 수 있는 클래스싱글턴 인스턴스는 가짜 구현으로 대체할 수 없기 때문에 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다.(타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든게 아니라면.) 보통 싱글턴을 만드는 방식.1. public static final 필드 방식의 싱글턴public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leaveTheBuilding() { ... }}장점 : 간결함, 해당 클래스가 싱글턴임이 API에 명백히 드러난다. 2..

base 64 디코딩 중 발생한 에러.base 64 문자열에 유효하지 않은 문자열이 포함되어 있어서 발생하는 것으로 알고 있는데 character 20가 뭔지는 알기 어려웠다. base64 라이브러리를 보면 20은 16진수이다. HEX가 16진수코드이고 20은 Space라는 걸 알 수 있다!실제로 문자열에 공백이 포함되어 있어 디코딩 오류가 났다.
- 생성자에 매개변수가 많다면 빌더를 고려하라 생성자나 정적 팩터리가 처리해야 할 매개변수가 많다면 빌더 패턴을 선택하는 것이 좋다. 선택적 매개변수가 많은 클래스의 생성자 혹은 정적 팩터리 패턴 3가지 1. 점층적 생성자 패턴받는 매개변수 개수에 따라 생성자를 여러개 만든다.(-)코드 작성시 매개변수의 의미나 개수가 헷갈려서 실수 할 수 있다. 읽기도 어렵다.Test t = new Test(240, 8, 100, 0, 35, 27); 2. 자바빈즈 패턴매개변수가 없는 생성자로 객체를 만든 후, 세터(setter) 메서드들을 호출해 원하는 매개변수의 값을 설정한다.(+)인스턴스 만들기가 쉽고 읽기 쉽다.(-) 객체 하나를 만들기 위해서는 세터 메서드를 여러개 호출해야한다. 객체 생성 코드와 값을 설정하는..
- 생성자 대신 정적 팩터리 메서드를 고려하라 클래스의 인스턴스를 얻는 기법에는 public 생성자도 있지만 생성자와 별도로 정적 팩터리 메서드도 사용 가능 장점1. 이름을 가질 수 있다.- 반환될 객체의 특성에 맞게 이름 짓기 가능- 생성자와 달리 개수 제약 없이 생성 가능 2. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다.- 같은 객체가 자주 요청되는 상황에서 사용 가능ex. 생성자로 인스턴스를 미리 만들어 놓고(private), 외부에서 인스턴스 사용시에는 정적 팩터리 메서드를 통하여 가져와 사용. 이렇게 되면 항상 같은 인스턴스를 반환. 인스턴스 통제가 가능해짐.\ 3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다.4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할..
https://jmseo.tistory.com/entry/Java-SFTP-Util-sftp-%EC%97%85%EB%A1%9C%EB%93%9C-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EC%98%88%EC%A0%9C-jsch [Java] SFTP 파일 업로드, 다운로드 예제 (jsch)이전에 K사와 sftp 송수신으로 가맹점정보 파일을 다운로드, 결제정보를 업로드하여 파일처리하는 업무를 하며 개발했던 소스를 포스팅한당.. 앞서 jsch 라이브러리를 사용하면 쉽게 SFTP 서버 접jmseo.tistory.com SFTPHelper.java (연결, 종료, 파일 업로드, 삭제)@Log4j2@Componentclass SFTPHelper { private Session sess..
기존 프로젝트에서는 log4j2 를 사용했었지만 자바에서 제공하는 라이브러리만을 써야하는 상황이 생겨.. 자바 기본 log 기능을 사용해보게 되었다.! 많은 조건 설정이 있지만 나는 대부분 기본으로 했고 필요한 것만 설정했다. - 생성자 선언 private static final Logger logger = Logger.getLogger(logTest.class.getName()); - 로그 파일 생성을 위한 코드 : 파일핸들러 (경로 + 파일명 지정) * 경로 지정 안 할 시 프로그램이 실행되는 디렉토리에 생성 FileHandler fileHandler = new FileHandler("/home/tomcat/logs/logTest_" + LocalDate.now() + ".log"); logger.a..
https://prohannah.tistory.com/82 Springboot 개인정보 암복호화 저장 (4) 암복호화 시점과 주체 선정 - JPA AttributeConverter 개인정보 암복호화 시점과 주체에 대해 어떤 고민을 하였는 지 공유하겠다. 다른 방법들도 많겠으나 나는 세 가지 후보에 대해서 고려하였고, JPA AttributeConverter를 사용하기로 결정했다. 이를 어 prohannah.tistory.com