목록Java/SpringBoot (9)
Develope Me!
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzSlbz/btrvLAjzgQo/hmC1Ys0n06ysUzCj5Jx0Q0/img.jpg)
이번엔 게시글 등록 화면을 구현해보고자 한다. PostsApiController 에서 API를 구현했기 때문에 바로 외부 CDN을 사용하는 방법으로 프론트엔드 라이브러리를 사용하여 화면을 만들것이다. (실제 서비스에서는 외부 서비스에 문제가 생기면 같이 문제가 생겨버릴 수 있기 때문에 이 방법을 잘 사용하지 않는다고 한다.) 부트스트랩, 제이쿼리 라이브러리를 inder.mustache 파일에 추가해야 하는데 바로 추가하는 것이 아닌 레이아웃 방식으로 추가하고자 한다. *레이아웃 방식: 공통 영역을 별도의 파일로 분리해놓고 필요한 곳에 가져다 쓰는 방식 src/main/resources/templates 디렉토리에 layout 디렉토리를 추가하여 레이아웃파일(footer,header)을 생성해줬다. 공통 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/IZM6W/btrvPffqSai/XnnxOI1rnkgcZFUqLDQa11/img.jpg)
코로나 확진되고 격리 해제까지..아주 다사다난했던 일주일이었다..ㅎ 증상이란 증상은 다 겪고 나서 이제 좀 정신을 차렸다. 저번 포스팅에선 템플릿엔진이 무엇인지를 알아보고 템플릿엔진인 머스테치 플러그인을 설치해봤다. 이번엔 머스테치를 적용해보고 테스트를 진행하여 잘 적용되었는지를 확인해보고자 한다. build.gradle implementation('org.springframework.boot:spring-boot-starter-mustache') 머스테치 플러그인을 설치해준 뒤 build.gradle파일에 머스테치 의존성을 추가해준다. index.mustache 스프링 부트로 시작하는 웹 서비스 src/main/resources/templates에 위치 시키면 머스테치 파일을 스프링 부트가 자동으로 로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dlIz5X/btruUnEYNWF/WXqUsEizUKPS9ekhR8fsa1/img.jpg)
API구현에 이어서 이번엔 서버 템플릿 엔진과 머스테치에 대해서 알아보도록 하겠다. 서버 템플릿 엔진 웹 개발 프로젝트를 경험한 분들이라면 누구나 JSP를 알 것이다. JSP의 정의에 대해 검색해보면 JSP(Java Server Pages)는 "HTML 코드에 JAVA 코드를 넣어서 웹 서버에서 동적으로 웹 페이지를 생성해서 웹 브라우저에게 돌려주는 서버 사이드 스크립트 언어"라고 나와있다. 정의도 정의지만 스프링 프레임워크를 사용해서 프로젝트를 진행했을 때의 JSP가 어떤 역할을 했는 지를 생각해보면 JSP는 MVC 모델 중 V 즉, View를 만드는데 사용했다. 이런 JSP를 템플릿 엔진이라고도 한다고 한다. 그렇다면 템플릿 엔진이 뭘까? 웹 개발에 있어서 템플릿 엔진이란 지정된 템플릿 양식과 데이터..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bF6iUS/btrt9TLneKw/5kndp202OygdcfJJuYOBLk/img.jpg)
JPA가 러닝커브가 높다는 말이 맞는 거 같다...어렵다..ㅎㅎ... 그치만 이렇게 계속 익히다보면 어느순간 머릿 속으로 정리가 될 거라고 믿는다. 이번에는 스프링 웹 계층 정리했던 것에 이어서 등록/수정/조회 API를 구현해보고자 한다! 등록/수정/삭제 PostsApiController @RequiredArgsConstructor @RestController public class PostsApiController { private final PostsService postsService; @PostMapping("/api/v1/posts") //등록 기능 public Long save(@RequestBody PostsSaveRequestDto requestDto) { return postsServic..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ctWYbu/btrtYVB4NYR/FjdULyZ5vwlxQazXkCDQl0/img.jpg)
Entity 클래스를 생성했다면 이제 테스트 코드를 작성해보자! Spring Data JPA 테스트 코드 domain.posts 패키지에 Posts 클래스를 작성했을 때와 동일하게 test 디렉토리에도 똑같이 패키지를 생성해준뒤 PostsRepositoryTest란 이름의 테스트 클래스를 작성했다. @RunWith(SpringRunner.class) @SpringBootTest public class PostsRepositoryTest { @Autowired PostsRepository postsRepository; @After //(1) 단위 테스트 끝난 후 수행되는 메소드 지정(데이터 침법 막기 위함) public void cleanup(){ postsRepository.deleteAll(); } @..
JPA에 대해 정리를 했다면 이제 실제로 적용해보도록 하자! Spring Data JPA 적용하기 우선 build.gradle에 Spring Data JPA와 H2 데이터베이스 의존성을 추가한다. implementation('org.springframework.boot:spring-boot-starter-data-jpa') implementation('com.h2database:h2') 더보기 1. spring-boot-starter-data-jpa - 스프링 부트용 Spring Data JPA 추상화 라이브러리 - 스프링부트 버전에 맞춰 자동으로 JPA 관련 라이브러리 버전 관리해줌 2. h2database - 인메모리 관계형 데이터베이스 - 별도의 설치없이 프로젝트 의존성만으로 관리 가능 - 메모리에..