등록, 수정, 삭제, 조회 화면 만들기 게시글 등록 화면 만들기 게시글 등록 화면을 만들기 위해 오픈소스 부트스트랩을 사용하겠다. 부트스트랩, 제이쿼리 등 프론트엔드 라이브러리를 사용할 수 있는 방법은 2가지가 있는데, 하나는 외부 CDN을 사용하는 것이고, 하나는 직접 라이브러리를 받아서 사용하는 것이다. 우리는 외부 CDN을 사용하여 프론트엔드를 구현하겠다. 실무에서는 외부 CDN 방식을 사용하지 않는다. 직접 구현해야지!! 레이아웃 방식을 사용하여 부트스트랩과 제이쿼리를 index.mustache에 추가해야한다. 레이아웃 방식 : 공통 영역을 별도의 파일로 분리하여 필요한 곳에서 가져다 쓰는 방식 해당 부트스트랩과 제이쿼리를 머스테치 화면 어디에서다 필요하므로 공통으로 사용되는 레이아웃 파일을 만들..
기본 페이지 만들기 index.mustache 이제 첫 페이지륻 담당할 index.mustache를 src/main/resources/templates에 생성해보자. 스프링 부트로 시작하는 웹 서비스 IndexController.java 이제 이 머스테치에 URL을 매핑해보자. URL 매핑은 당연히 Controller에서 해야하니 IndexController를 생성하자. @Controller public class IndexController { @GetMapping("/") public String index() { return "index"; } } 머스테치 스타터로 인해 컨트롤러에서 문자열 반환 시 앞의 경로와 뒤의 파일 확장자는 자동으로 지정이 된다. 앞의 경로는 src/main/resources..
서버 템플릿 엔진과 머스테치 소개 이번에는 머스테치(Mustache)를 통해 화면 영역을 개발하는 방법을 배워보자. 템플릿 엔진이란 무엇인가? 웹 개발에 있어 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 이야기한다. 예전 스프링이나 서블릿을 사용했다면, JSP, Freemaker 등이 떠오를테고 요즘은 리액트, 뷰 등이 떠오를 것이다. 이것들 모두 결과적으로는 지정된 템플릿과 데이터 를 이용하여 HTML을 생성하는 템플릿 엔진이다. 다만 약간의 다른 점이 있는데, 서버 템플릿 엔진 : JSP, Freemaker 클라이언트 템플릿 엔진 : 리액트, 뷰 만약 아래와 같은 코드가 주어진다면 결과는 어떻게 되는 지 생각해보자. $(document).ready(fu..
JPA Auditing으로 생성시간/수정시간 자동화하기 보통 Entity는 해당 데이터의 생성시간과 수정시간을 포함하고 있다. 이런 정보는 추후 유지보수에 있어 굉장히 중요한 정보이기 때문이다. 이렇다 보니 DB에 삽입 및 갱신할 때는 날짜 데이터를 등록/수정하는 코드가 항상 들어가게 된다. //Ex. 생성일 추가 public void savePosts() { ... posts.setCreateDate(new LocalDate()); postsRepository.save(posts); ... } 하지만 이런 코드가 모든 테이블과 서비스 메소드에 구현해야하 한다면 중복이 발생하고 코드가 지저분해진다는 점이 발생하게 된다. 이런 문제를 해결하고자 나타난 것이 JPA Auditing이다. LocalDate 사..
등록/수정/조회 API를 만들자 본격저으로 등록, 수정, 삭제 기능을 만들어보자 등록 기능을 만들어보자 먼저 클래스들을 만들자 Controller : PostApiController DTO : PostsSaveRequestDto Service : PostsService //Controller package com.mesung.book.springboot.web; import com.mesung.book.springboot.service.posts.PostsService; import com.mesung.book.springboot.web.dto.PostsSaveRequestDto; import lombok.RequiredArgsConstructor; import org.springframework.web..
JPA로 데이터베이스를 다뤄보자 현재 운영을 진행하면서 MyBatis를 이용해 데이터베이스 쿼리를 작성한다. *즉, 실제 개발하는 시간보다 SQL을 다루는 시간이 더 많게 느껴진다는 것이다. * 해당 문제는 객체지향 프로그래밍의 걸림돌이 된다.. 객체 모델링 보다는 테이블 모델링에 집중하게 되고... 이를 해결하기 위해 즉, 관계형 데이터베이스를 이용해서 객체지향 프로그래밍을 할 수 있는 JPA(자바 표준 ORM)이 나타나게 된다. 참고 ibatis와 mybatis는 ORM이 아니고, SQL Mapper이다. ORM은 객체를 매핑하는 것이고, SQL Mapper는 쿼리를 매핑한다는 것에 차이가 있다. JPA란, 현대 웹 애플리케이션에서는 관계형 데이터베이스가 필수적이다. Oracle, MySQL, MSS..
스프링 부트와 테스트 코드 테스트 코드란, TDD와 단위 테스트는 서로 다른 이야기이다. TDD는 테스트가 주도하는 개발. 즉, 테스트 코드를 먼저 작성하는 것을 말한다. Red : 항상 실패하는 테스트를 먼저 작성 Green : 테스트가 통과하는 프로덕션 코드를 작성 Refactor : 테스트가 통과하면 프로덕션 코드를 리팩토링 단위 테스트는 TDD의 첫번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 말한다. 단위 테스트는 테스트 코드를 꼭 먼저 작성해야하는 것도 아니고, 리팩토링도 포함되지 않는다. 즉, 순수하게 테스트 코드만 작성하는 것을 말한다. 단위 테스트 코드는 왜 작성하지? 장점을 살펴보자 개발단계 초기에 문제를 발견할 수 있다. 개발자가 나중에 코드를 리팩토링하거나 라이브러리 업그레이..
- Total
- Today
- Yesterday
- java8
- package-private
- mustache
- @Lazy
- 인프런
- 이펙티브자바
- 복사 팩토리
- 생성자
- JPA
- try with resources
- try catch finally
- 연관관계
- 자바8
- 정적팩터리메서드
- flatMap
- ifPresent
- 김영한
- 빈 순환 참조
- junit
- jdk버전
- 스프링부트
- java
- effectivejava
- 점층적 생성 패턴
- Effective Java
- 팩토리 메소드 패턴
- springboot
- Spring
- 빌더 패턴
- 이펙티브 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |