본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ

java25

[java] assert 개발 테스트 에서 조건 걸기 Java에서 버그 또는 예상치 못한 상황을 검출하고 적절히 대응하기 위해 사용하는 방법이 있습니다. 주로 exception을 사용할 수 있으며, 특정한 경우 예외를 던져 경우에 대비하고 프로그램이 멈추지 않게 합니다. 다만 특정한 경우에 대비하기 위해 exception을 여러개 배치하기도 합니다. - 주로 Exception은 try catch로 묶어서 사용하거나 throws로 에러를 던지기도 합니다. 또다른 방법으로는 switch나 if else 에 조건을 여러개 넣어가며 검증하는 방법도 있겠습니다. 실제로 들어오는 데이터의 검증이 필요하다면 이를 통해 필터링 할 수도 있습니다. - 유용한 방법이긴 하나, 코드가 상당히 길어져 가독성이 떨어질 수 있습니다. 그러다가 assert 라는 것을 알았는데, jd.. 2024. 2. 3.
[Java] null 에 대한 검증, 처리방법 문자열에 대해 복습하면서, null에 대해 한번쯤 정리를 해보고 싶었습니다. 예전에 만들어 둔 소스들을 프로젝트에만 저장해서 뒀는데, 블로그에 한번 공유하는 것도 좋을 것 같았습니다. null이라는 형식은 아무것도 없는 것을 의미합니다. 이는 빈값을 참조하는 것과 다른 의미로, 참조하는 것이 없다는 의미입니다. 그렇다고 해서 초기화 하지 않은 int a; 이런게 null이라는 것은 아닙니다. null이라는 형식이 존재하며, 이것 자체로 아무것도 없는 것을 의미합니다. 중요한 것은 기본형 변수나 참조 변수가 null로 들어갔을 때, 특정 메소드 처리중에 런타임 에러를 발생시키는 것입니다. 이는 컴파일러로 걸러지는 부분이 아니어서 테스트를 통해 검증하지 않으면, 문제가 발생할 확률이 높습니다. 그래서 nul.. 2024. 1. 14.
[Java] Optional 소개 자바의 Optional은 Java 8에서 소개된 클래스로, 값이 존재하지 않을 수 있는 상황에서 사용됩니다. 이 클래스는 null을 피하기 위한 강력한 도구로서, 코드에서 명시적으로 값이 없음을 나타내거나 다룰 때 사용됩니다. Optional 클래스는 제네릭을 사용하여 어떤 타입의 객체도 감싸서 담을 수 있습니다.. Optional 객체는 값이 존재할 수도 있고, 없을 수도 있습니다. 때문에, NullPointerException 예외를 방지할 수 있고, 코드의 안정성을 높이며 가독성을 향상시킵니다. Optional은 다음과 같은 주요 특징을 가지고 있습니다: Null 방지: Optional은 값이 없는 경우 null을 사용하는 것 대신 사용됩니다. 이로써 NullPointerException을 방지할 .. 2024. 1. 13.
[Java] HashMap Hashtable 차이점, 구분하기 1. Hash란? 해시(Hash)란 단방향 암호화 기법인 해시함수(HashFunction)을 이용하여 생성된 고정된 길이의 비트열을 의미합니다. Hash function, 해시 함수 (짧게는 해시 라고도 부름)는 임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수를 의미합니다. 다른말로 표현하자면, 아무리 큰 숫자를 넣더라도 정해진 크기의 숫자가 나오는 함수입니다. 예를 들면 어떤 숫자를 10으로 나누었을 때 그 나머지를 구하는 함수도 해시 함수입니다. (나머지가 0~9 까지 한자리의 크기로 출력되기 때문) 이러한 해시 함수를 적용하여 나온 고정된 길이의 값을 해시값, 해시 코드, 해시섬(sum) 등으로 부릅니다. 해시 함수는 보통 입력의 범위(정의역)보다 출력값의 범위(치역.. 2023. 12. 30.
[JAVA] 자바에서 REST API 구현하기 자바로 Rest API를 구현할 수 있다. 일반적으로 Spring 프레임워크 기반에서 구현하는데, 어떤 방식으로 구현하는걸까? 1.HttpURLConnection 2.HttpClient 3.스프링 RestTemplate [sample Code] 1.HttpURLConnection 방식 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 URL url = new URL("요청하고 싶은 url"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //인증방식에는 두가지가 있다. //1. 토큰 방식 //2. ID / PW 를 B.. 2023. 7. 20.
[Java] 객체지향에 대한 5원칙 정리 객체 지향 설계 5원칙 객체 지향 설계에는 다음과 같은 5가지 원칙이 있다. 1. SRP (Single Responsibility Principle) : 단일 책임 원칙 2. OCP (Open-Closed Principle) : 개방 폐쇄 원칙 3. LSP (Liskov Substitution Principle) : 리스 코프 치환 원칙 4. ISP (Interface Segragation Principle) : 인터페이스 분리 원칙 5. DIP (Dependency Inversion Principle) : 의존 관계 역전 원칙 앞 글자들을 모아 SOLID라고 부르기도 한다. 1. SRP (Single Responsibility Principle) : 단일 책임 원칙 하나의 클래스는 하나의 책임만 가져야.. 2023. 7. 20.
[java] pojo란 무엇인가?(Plain Old Java Object) 작업을 하다가 뜬금없이 pojo 라는 단어를 듣게 되었다. 고유명사인가? 무슨 의미가 있나 싶어서 찾아봤는데, Plain Old Java Object 의 줄임말로써 마틴 파울러 라는 사람이 고안한 "오래된 순수한 자바 객체", "그저 자바 객체" 라는 의미로서 사용되는 것 같다. pojo라는 개념이 개발하는데 왜 쓰이는가? 굳이 쓸 필요가 있을까? 이런거 모르고서도 잘만 개발해왔는데, 판단하기 위해 pojo가 뭔지 정리해보려한다. pojo가 뭘까? pojo란, 이름 그대로 "순수한 객체, 보통 객체, 간단한 객체"를 의미한다. Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다. 2000년 9월에 마틴 파울러, .. 2023. 7. 20.
[Java] Java EE에서 Jakarta EE로의 전환 https://www.samsungsds.com/kr/insights/java_jakarta.html Java EE에서 Jakarta EE로의 전환 | 인사이트리포트 | 삼성SDS 자바 기술자라면 Java EE(Java Platform, Enterprise Edition) 또는 J2EE(Java 2 Platform, Enterprise Edition)를 들어봤을 것입니다. 자바를 이용한 서버 개발 플랫폼으로 한 때 엔터프라이즈 자바 기술을 선도하며 막 www.samsungsds.com 오라클에서 자바의 상용화를 진행하며 상품화에 실패하며 새로이 등장한 jakarta이다. 언젠간 jakarta로 바꿔 개발하는 날이 오겠지/// 2023. 7. 13.
[spring] Logging Facade(로깅 퍼사드) 와 Logger(로거) Logging Facade : - 로거 API를 추상화해둔 interface (Commons Logging, SLF4j ) Logger : 로깅을 제공하는 class (Log4j, Log4j2, Logback (로거)) 스프링 부트는 Commons Logging 를 기본으로 사용 스프링 개발 당시 SLF4j가 없어서 하지만 최종적으로 Logback(SLF4j의 구현체) 으로 찍히게 된다. 스프링 부트 로깅 --debug (일부 핵심 라이브러리만 디버깅 모드로) --trace (전부 다 디버깅 모드로) 컬러 출력 : spring.output.ansi.enabled 파일 출력 : logging.file or logging.path 로그 레벨 조정 :logging.level.패키지 = 로그 레벨 커스텀 로그 .. 2023. 7. 13.
[Spring] RequestEntity 사용하기, http 기반 응답 구현하기 Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재한다. 이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다. HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다. 별도 포스팅으로 ResponseEntity를 설명하려함에도 같이 적는 이유는 RequestEntity, ResponseEntity가 세트로 사용되기 때문이다. 같이 사용함 으로써 간편하게 rest 전송 기능을 구현할 수 있다. 우선 RequestEntity에 대해 알아보자. public RequestEntity(@Nullable T body, @Nullab.. 2023. 6. 30.
[Java] Enum 상수 집합 사용하기 개발 업무를 하면서 enum은 사용해 본 적이 없다. 즉, 있는걸 까먹고 있었는데, 어쩌다가 공부하며 접하게 되어 기록을 남겨본다. enum은 서로 연관된 상수들의 집합을 class 대신 나타낸 것 정식 명칭은 열거형, 열거체 라고 한다. 언어마다 enum이 지원되지만, 사용 방법은 제각각 이라고 한다. 자바에선 1.5 부터 지원하는 형식이며, enum도 class의 형식 중 하나로 본다. 그렇다보니 별도 enum 형식으로 생성 가능하다. (interface 처럼) 만들어보면 다음처럼 표시된다. 샘플 Enum 소스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39.. 2023. 6. 28.
[java] jackson 에러 cannot deserialize from Object value 해결방법 com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.rest.example.domain.Ticket` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) rest api를 테스트하는 중 다음과 같은 에러를 발견했다. rest 소스코드 1 2 3 4 5 6 7 8 9 @PostMapping(value= "/postticket") public Ticket inputTicket(@RequestBody Ticket tic.. 2023. 6. 23.