목록JAVA (23)
개발 기록
(4) 인스턴스화를 막으려거든 private 생성자를 사용하라 정적 메서드와 정적 필드만을 담은 클래스는 인스턴스로 만들어 사용하려는 클래스가 아님.- 생성자를 명시하지 않을 경우 컴파일러가 자동으로 기본 생성자를 만들어줌- 이때는 private 생성자를 추가하면 클래스의 인스턴스화 막을 수 있음public class UtilityClass { // 인스턴스화 방지용 private Utilityclass() { throw new AssertionError(); }}- 클래스 안에서 실수라도 생성자 호출을 막기위해 error 를 던져도 좋음- 하지만 생성자를 호출하지 않는 코드라 한번에 이해가 어려우니 주석을 달자.- 상속 불가능. (5) 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 클래스가 내..
(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
기존 프로젝트에서는 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..