개발바닥곰발바닥
반응형
article thumbnail
Spring Json List에 값이 안들어가는 오류 해결 방법
JAVA/Spring 2022. 2. 23. 06:52

게시판의 게시글을 가져오는 api를 작업하고 있는데, 작업이 끝난 후에 Postman으로 확인을 해보면 리스트 안의 내용이 텅텅 비어있는 문제가 생겼다. 에러가 뜨는 것도 아니라서 우선 Serivce에서 Mapper로 DB의 게시글 목록 잘 가져오는 것 확인하고, 문제가 없길래 DTO에 값이 잘 안들어가나 하고 Controller에서 리턴해줄 때 body 값을 확인했는데 body에도 값이 정상적으로 다 들어가 있길래 정말 당황스러웠다. 그래서 온갖 검색어로 다 찾아보면서 삽질하고 있었는데, 겨우겨우 stackoverflow에서 답을 찾을 수 있었다. 해당 질문 링크 Spring REST Controller returns empty JSON. Iterable data structure. Why? I rea..

Spring Json 응답 시 null 값인 필드 제외하기
JAVA/Spring 2022. 2. 23. 00:28

Json으로 Response를 보낼 때, 필드가 null 값일 경우 그 필드를 제외하고 보내려면 ResponseDto에 JsonInclude 어노테이션을 사용하면 된다. 사용법은 아래와 같다. @Getter @JsonInclude(JsonInclude.Include.NON_NULL) // Null 값인 필드 제외 @Builder public class UserResponseDto { private String email; private String nickname; }

article thumbnail
mybatis.type-aliases-package 여러개 지정하기
JAVA/Spring 2022. 2. 15. 23:20

Spring 프로젝트를 하면서 Mybatis를 사용하고 있는데, application.properties 파일에 mybatis.type-aliases-package를 지정해두면 Mapper XML 파일에 resultType 클래스의 패키지를 안적고 클래스명만 써도 되게 해준다. 그런데, 프로젝트를 진행하면서 패키지가 여러개로 분할되니까 domain도 여러 패키지에 나눠져 있었는데, mybatis.type-aliases-package 에는 한 패키지만 설정되어 있어서 오류가 발생했기 때문에 그냥 해당 속성을 지우고 패키지를 다 적어주고 있었다. 근데 이게 너무 불편해서 찾아보니 여러 패키지를 설정할 수 있었는데 그냥 아래 코드처럼 패키지명 사이에 컴마(,)만 적어주면 여러 패키지를 적어도 잘 작동한다.

article thumbnail
application.properties 파일 한글 깨짐 현상
JAVA/Spring 2022. 2. 1. 03:14

IntelliJ에서 Spring 개발을 하다가 application.properties 파일에 주석 등의 한글을 적게 될 일이 생기는데 다음날 다시 프로젝트를 켜서 확인해보니 한글들이 모두 깨져있어서 당황스러웠다. 찾아보니 IntelliJ에서 Global Encoding은 UTF-8로 설정되어 있는 반면, properties 파일은 ISO-8859으로 설정되어 있는 것을 볼 수 있는다. 이렇게 설정된 이유는 Java의 PropertyResourceBundle 클래스는 ISO-8859로 인코딩 되어야 하기 때문이라고 한다. (참고 링크) 우선 IntelliJ 에서 File -> Settings -> Editor -> File Encodings 메뉴로 들어가면 아래 사진과 같이 화면이 나온다. 그럼 빨간 동..

[MySQL] Database 이름 변경하기
데이터베이스 2022. 1. 25. 20:39

MySQL 5.1.23 버전 이후로 RENAME DATABASE 구문이 제거되었기 때문에 이미 생성한 데이터베이스의 이름을 변경하고 싶은 경우, 새로운 데이터베이스를 만들어서 그 데이터베이스에 기존 데이터베이스를 옮겨주는 방식으로 가능하다. 1. RENAME TABLE 사용 CREATE DATABASE '새로운 DB명'; RENAME TABLE '기존DB.테이블명' TO '새DB.테이블명'; DROP DATABASE '기존DB명'; 방법은 매우 간단하지만 테이블이 많을 경우 작업을 여러번 해야 한다는 번거로움이 있다. concat을 사용하여 반복 작업을 자동화 하는 방법이 있지만 이 게시글에선 따로 설명하지 않고 MySQL 공식 문서에 있는 방법을 소개한다. 2. mysqldump 사용 $> mysqld..

article thumbnail
Windows H2 Database 설치 방법
JAVA/Spring 2021. 12. 31. 15:17

H2 Database 설치 방법 Spring 공부중 데이터베이스를 사용해야 해서 가볍고 편리해 교육용으로 사용하기 좋은 H2 DB를 설치하게 되었다. 우선 H2 데이터베이스 설치 링크로 들어간다. Downloads 링크를 타고 들어가면 다음과 같은 화면이 나온다. 최신 버전을 사용하려면 가장 위의 버전에서 윈도우일 경우 Windows Installer, 다른 OS일 경우 Platform-Independent Zip 을 클릭해서 다운로드 받아주면 된다. 혹시 최신 버전이 아닌 이전 버전을 다운로드 받고 싶다면 Archive Donwloads를 클릭해서 들어가면 아래 사진과 같이 이전 버전들을 선택해서 다운로드 받을 수 있다. 필자는 윈도우 사용자이므로 윈도우 설치파일 기준으로 설명하겠다. 설치 파일을 다운..

public 대신 getter와 setter를 사용하는 이유는 무엇일까
기타 2021. 12. 17. 00:32

getter와 setter를 사용해야 하는 이유 java 공부를 하면서, getter와 setter를 만들어 사용했었는데 문득 어차피 이 객체의 속성을 외부에서 읽거나 쓸 필요가 있다면 그냥 public으로 선언하면 될텐데 왜 굳이 불편하게 getter와 setter를 사용해서 불필요한 코드를 늘려야 하는가에 대한 궁금증이 생겼다. 그래서 찾아보니, 다음과 같은 이유들이 있었다. 속성을 읽거나 쓰는 것과 관련된 동작의 캡슐화 (이를 통해 유효성 검사 등의 추가 기능을 쉽게 추가할 수 있다.) getter와 setter를 사용하여 속성을 노출하면서도 속성의 내부 표현을 숨길 수 있다. 공용 인터페이스를 변경으로부터 격리하여 구현이 변경되는 동안 공용 인터페이스가 일정하게 유지되도록 한다. 속성의 수명 및 ..

[Android] 안드로이드 작업 스레드에서 UI 업데이트
Android 2021. 12. 8. 19:24

안드로이드 Worker Thread에서 UI Thread 실행하기 안드로이드에서 메인스레드가 아닌 스레드에서 UI 를 업데이트하면 예외가 발생하므로 반드시 UI 업데이트는 메인스레드에서 해줄 필요가 있다. 그런데 만약에 Worker Thread에서 중간에 UI를 업데이트해야 한다면 어떻게 해야할까? 방법은 여러가지인데 크게 컨텍스트에 액세스 할 수 있는가 없는가와, Activty 클래스 내부에 있는지를 확인한다. MainActivity 클래스 내부에 있는 경우 MainActivity.this.runOnUiThread(new Runnable()) { @override public void run() { //UI 업데이트 } } 백그라운드 스레드에 Context 객체가 있는 경우 Handler mainHan..

반응형