개발공부/Java(38)
-
[Java] jackson 라이브러리는 왜 non-static Inner class를 매핑하지 못할까?
프런트와 http로 통신할 때 JSON 형식으로 데이터를 받는 경우가 많습니다. 객체지향언어인 Java에서 객체로 바인딩 하는 문제를 도와주는 라이브러리 중 하나인 jackson은 대표적인 ObjectMapper 클래스를 제공합니다. ObjectMapper 클래스는 JSON을 읽기, 쓰기 기능 뿐만아니라 JSON Tree Model인 JsonNode 형태 가공해주기도 합니다. 기본적인 jackson 라이브러리에 대한 설명은 마치고, 다룰 주제인 non-static Inner class인 경우 convertValue(Object fromValue, Class toValue) 메서드에서 왜 com.fasterxml.jackson.databind.exc.InvalidDefinitionException를 날리는..
2022.03.01 -
[UML] UML(Unified Modeling Language) Diagram
UML(Unified Modeling Language) Diagram UML이란 시스템 설계를 시각화 하기위해 만들어진 다이어그램입니다. 객체 지향 언어인 Java 진영에선 시스템 설계를 표현하기 위한 표준 모델링으로 볼 수 있을 것 같습니다. UML 클래스 관계도 [출처: https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/] Inheritance(상속) 상속은 클래스가 IS-A 관계일 때 성립하는 상태입니다.(하위 클래스가 상위 클래스를 대체할 수 있어야 함; potato -> vegetables, bus -> vehicle) *참고로 HAS-A 관계는 조립(composition) 상..
2022.01.22 -
[Regex] Pattern and Matcher in Java
Regex: Pattern and Matcher in Java /* Predefined character classes . Any character (may or may not match line terminators) \d A digit: [0-9] \D A non-digit: [^0-9] \s A whitespace character: [ \t\n\x0B\f\r] \S A non-whitespace character: [^\s] \w A word character: [a-zA-Z_0-9] \W A non-word character: [^\w] Greedy quantifiers X? X, once or not at all X* X, zero or more times X+ X, one or more ti..
2022.01.21 -
[Java] main 메서드
main 메서드 Java를 처음 시작하면 클래스의 메서드를 실행시킬 때 main method를 사용합니다. 하지만 원리에 대해 오래 생각해본 적이 없다는 걸 최근에 발견했고 간단히 찾은 내용을 소개하려 합니다. Java main method는 Java 프로그램이 시작될 때 실행되는 포인트들입니다. 메서드 규약은 public static void main(String[] args)이며, Argument의 네이밍을 myStringArgs로 수정할 순 있어도 main이란 메서드명을 수정할 순 없습니다. 메서드를 하나하나 뜯어보면, public 접근 제어자는 java runtime 때 클래스 경로가 어디 패키지 내에 위치하든 실행할 수 있도록 접근 권한을 줍니다. static은 java runtime 때 클래스..
2022.01.15 -
[Java] Mac class
Javax.crypto.Mac 클래스 Mac class Javax Mac 클래스는 MAC(Message Authentication Code) 알고리즘 기능을 제공해줍니다. MAC은 서로 공유하는 secret key가 있을 때, 전송되는 정보의 유효성을 검증하고 요청에 대한 응답을 처리해주기 위해 사용됩니다. 따라서 MAC은 secret key를 기반으로 전송되는 데이터들에 대한 보안 기능을 한다고 볼 수 있습니다. MAC의 메커니즘은 암호화 해시기능에 기반하는데, 이러한 매커니즘을 HMAC이라고 합니다. HMAC은 어떤 해시기능 (e.g., SHA256, SHA384)과도 같이 사용하며, secret key와 조합해서 사용합니다. [위 내용은 아래 참고자료(Java docs)를 번역한 내용입니다.] 예제..
2022.01.13 -
[JPA] @Embedded 와 @Embeddable
@Embedded 와 @Embeddable 엔티티 여러 필드가 한 객체로 묶여서 관리할 경우 @Embeddable 클래스를 사용하고 엔티티에 @Embedded을 걸어줍니다. @Entity @Table(name = "PRODUCT") public class Product { @Embedded private Address address; private int price; } @NoArgsConstructor(access = AccessLevel.PROTECTED) @Embeddable @ToString public class Address { @Builder public Address(String city, String street, String zipcode) { this.city = city; this...
2021.10.08