본문 바로가기

분류 전체보기

(105)
Java DateTimeFormatter을 사용하여 요일, 오전/오후 구하기 (+ 다른 나라 언어로 포맷팅 변경하는 방법) 안녕하세요! 이번 포스팅에는 자바의 LocalDateTime과 DateTimeFormatter을 사용해서 요일과 오전/오후를 구하는 방법을 알아보겠습니다. 종종 한글로 요일이나 오전/오후를 출력해야 할 때가 있는데, 생각처럼 잘되지 않아서 생각보다 엄청난 삽질을 한끝에 얻은 방법을 공유하려고 합니다! 현재 시간 구하기 LocalDateTime now = LocalDateTime.now(); 포맷을 하기 위해 LocalDateTime의 now() 메소드를 사용해서 현재 시간을 구해줍니다. 출력을 해보면 잘 출력되는 것을 확인할 수 있습니다. 요일 구하기 제가 사용한 포맷팅 형식은 ~월 ~일 (요일)입니다. now.format(DateTimeFormatter.ofPattern("MM월 dd일(E)")); 정..
SpringBoot로 JSON 응답 보내는 방법 (GSON JsonObject, @ResponseBody, @RestController) 안녕하세요! 이번에는 Spring Boot에서 JSON 형태로 return을 해주는 방법에 대해 알아보겠습니다. 정말 간단하기 때문에 쉽게 따라오실 수 있습니다! 💃 준비 - DTO 만들기 예시를 보여주기 위해 간단한 DTO를 만들어줍니다. @Setter @Getter public class Blog { private String title; private String content; } 👀 어노테이션 사용하기 컨트롤러 단에서 JSON 객체를 문자열로 간편하게 직렬화 할 수 있게 도와주는 두 어노테이션을 소개합니다. @RestController 데이터를 전송하기 위한 컨트롤러로 사용하며,@RestController를 사용하면 기본으로 하위에 있는 메소드들은 모두 @ResponseBody를 가지게 됩니다...
SpringBoot와 Thymeleaf를 이용하여 페이징하기 안녕하세요. SpringBoot로 만든 게시판 소스에 Thymeleaf를 사용하여 페이징 기능을 추가해보겠습니다. 목록을 가져오는 서비스 메소드 구현 먼저, 목록을 가져오는 서비스 메소드를 구현해보도록 하겠습니다. Service /** * 방명록을 모두 가져오는 메소드 * @param startAt 현재 가져온 페이지 * @return */ @Override public Page findAllPage(int startAt) { Pageable pageable = PageRequest.of(startAt, 10); return guestBookRepository.findAll(pageable); } startAt은 현재 페이지를 말합니다. 주소창에서 파라미터로 가져온 후 넘겨줍니다. (좀 이따 컨트롤러에서..
[Spring Boot] @IdClass로 복합키 매핑을 했을 때 생기는 오류 해결 방법 (DB 컬럼명과와 엔티티 변수명이 다를 때) 먼저 아래 내용을 체크해야 한다. 엔티티 클래스와 식별자 클래스의 자료형과 변수명이 같은가? 식별자 클래스는 Serializable을 구현하고 있는가? 식별자 클래스의 접근 제어자가 public인가? User.java @Entity @Getter @Setter @Table(name = "users") @IdClass(UserId.class) public class User implements Serializable { /** * 회원 번호 (Unique, Auto Increment) */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "seq") private Long id; /** * 아이디 (Unique) */ @Id p..
Spring Boot Map Struct Gradle 사용해보기 Map Struct? Map Struct란 자바 빈의 매핑(Entity - DAO)을 쉽게 하도록 도와주는 프래임워크 자세한 설명은 아래 링크를 참고해주세요! (공식 사이트) MapStruct - Java bean mappings, the easy way! MapStruct – Java bean mappings, the easy way! Java bean mappings, the easy way! Get started Download mapstruct.org Gradle 환경에서 Map Struct을 사용한 Spring Boot 예제 Map Struct를 사용하면서 삽질을 많이 했기 때문에, 다른 분들은 저 같은 삽질은 하지 않았으면 좋겠는 마음으로 예제를 만들었습니다! 예제를 작성하다보니 본의아니게 예..
Spring Boot Validation을 사용하여 요청 값 검증하기 전체 코드는 Github에서 확인이 가능합니다. Bean Validation 도메인 로직에서 값을 검증할 수 있게 도와주는 인터페이스이다. (참고:Java와 Spring의 Validaiton) 주요 어노테이션들은 아래와 같다. /** * 직접 검증을 하고 싶을 때 사용 */ @AssertTrue @AssertFalse /** * 문자열을 다룰 때 사용 */ @NotNull // null 불가능 @NotEmpty // null, 빈 문자열(스페이스 포함X) 불가 @NotBlank // null, 빈 문자열, 스페이스만 포함한 문자열 불가 @Size(min=?, max=?) // 최소 길이, 최대 길이 제한 @Null // null만 가능 ​ /** * 숫자를 다룰 때 사용 */ @Positive // 양수..
DAO, DTO 차이점 개발을 하다가 DAO, DTO의 개념이 헷갈려서 정리를 하게 되었다. DAO(Data Access Object)란? - 실제로 데이터베이스에 접근을 하기 위해 생성하는 객체 DTO(Data Transfer Object)란? - 데이터 교환을 위해 사용하는 객체 - DB의 데이터를 Controller 혹은 Service로 보낼 때 사용 - getter, setter를 가지고 있는다. - DTO vs VO - VO는 DTO와 비슷하지만, 수정할 수 없다. ( getter만 있는 것이라고 생각하면 됨)
Github & IntelliJ로 프로젝트 관리하기 (이슈 만들기, 브랜치 생성, PR날리기) Outline Github와 IntelliJ를 사용하며 프로젝트를 관리하던 와중, 이 플로우를 블로그에 기록하고 공유하면 좋을 것 같다는 생각이 들어 작성하게 되었습니다. 틀린 내용이 있다면 댓글로 정정해주신다면 감사하겠습니다! Contents Issue Template 만들기(최초) Issue 만들기 Task 생성 (Branch 만들기) 코드 작업 PR(Pull Request) 날리기 Issue 닫기 Flow 1. Issue Template 만들기 프로젝트 단위로 최초로 한 번만 실행하면 되며, 따로 게시글로 정리해놓았습니다. 깃허브 이슈 템플릿 만들기 2. Issue 만들기 생성한 Issue Template를 활용하여 이슈를 새로 만듭니다. 이슈는 이슈 번호로 구분합니다. 저 같은 경우에는 이미 이슈..