일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- Greedy
- Proxy
- kotlin
- 자바
- Android
- transaction
- Servlet
- 그리디
- JDBC
- jpa
- java
- Spring Boot
- springdatajpa
- JPQL
- AOP
- SpringBoot
- db
- pointcut
- spring
- 스프링
- 백준
- Exception
- QueryDSL
- http
- 알고리즘
- 스프링 핵심 기능
- Thymeleaf
- 인프런
- 김영한
- 스프링 핵심 원리
- Today
- Total
목록Project/블로그 게시판 만들기 (46)
개발자되기 프로젝트
1. ddl-auto 이제는 운영 서버에 배포된 것과 마찬가지이다. 기존 DDL-AUTO는 CREATE로 설정했다. 왜냐 Application을 실행하면 싹 지우고 test를 하기 위해서 create를 사용. 하지만 운영서버는 application이 다시 실행된다 해도 기존 data가 날라가면 안된다... 그래서 validate or none을 사용할 필요가 있다. 데이터베이스 스키마 자동 생성, DDL 주의사항 1.데이터베이스 스키마 자동 생성 DDL???(Data Definition Language) - 데이터베이스를 정의하는 언어이며, 데이터의 전체의 골격을 결정하는 역할을 하는 언어 DDL을 애플리케이션 실행 시점에 자동 생성 bsh-developer.tistory.com jpa: hibernat..
이왕 만들어 본거 배포까지 해보자! 1. HEROKU 클라우드 플랫폼으로 한 계정당 5개 application을 무료로 배포할 수 있다. GitHub과 연동되어서 편하게 배포 가능 Heroku dashboard.heroku.com 2. Heroku 사용 방법 회원가입 app생성 CLI 다운로드 CLI를 사용하면 GIT처럼 CMD에서 controller 가능. https://devcenter.heroku.com/articles/heroku-cli GitHub연동 Deploy탭에서 간단하게 설정 가능 이미 GItHub에 올라가있는 경우도 가져올 수 있음. Deploy 방법 배포할 branch 선택 후 Deploy Branch클릭 3. Error잡기 Error원인 확인하고 잡는데만 하루종일 걸렸다.. log내..
지금까지 공부한 내용은 최대한 반영했다. SpringBoot에서 JPA를 편하게 사용할 수 있도록 제공하는 기능은 일부러 최대한 사용을 하지 않았다. Query최적화도 진행해 보려 했지만.. 너무 간단한 구조라 큰 의미는 없을 것 같다. 관리자 계정에서 회원 조회, 댓글 조회 등도 추가할 수 있지만 글 조회와 기본적으로 기능이 동일하고, View에서 어떻게 뿌릴지가 중심이기 때문에 구현하지 않았다.(method는 만들어두었다.) 이제 대략적으로 WebApplication이 어떻게 구성되는지 알 수 있을 것 같다. 아쉬운 점은 대댓글을... 못했다. method에서는 구현했는데, view에서 어떻게 처리해야할지를 생각을 못했다. 앞으로 계획 자료구조, JAVA에 대한 깊이있는 이해 필요, 디자인 패턴 Sp..
1. 원인 지금 구조에서 가장 큰 문제가 있다. post 번호가 연속적으로 생서이 안된다. 글번호(순서)는 postID를 활용한다. ID 생성 규직을, comment, post, member가 공유해서 발생한 문제이다. 현재는 @GeneratedValue에 전략을 지정하지 않은 상태이다. 지정하지 않으면 AUTO가 적용된다. 각 DB에 적합한 값을 넘겨준다. DB 의존성 없음. Indicates that the persistence provider should pick an appropriate strategy for the particular database. The AUTO generation strategy may expect a database resource to exist, or it may ..
1. ExceptionResolver 예외가 터지면 WAS까지 올라가서 500이 터진다. client가 허가되지 않은? 여튼 client가 잘못한경우도 exception이 발생하는 경우 500으로 처리된다. 하지만 이와같이 Client가 잘못 요청한 경우는 400으로 처리한는게 맞는 것 같다. 저번에 Naver API를 사용하면서 된통 당했었다 ㅋㅋㅋ 500으로 계속 응답이와서 서버 문제인 줄 알았떠니, 내가 잘못한 경우였다.. ㅜ 여튼 그래서 Client에서 잘못된 요청을 하는 경우 IllegalArgumentException을 터트릴 계획이다. IllegalArgumentException이 발생하는 경우는 500이 아니라 400으로 응답할 것이다. ExceptionResovler를 사용하면 예외 발생..
1. Paging 처리 - Repository JPA를 사용하면 Paging처리가 간단한다. setFirstResult : 어디서부터 시작? seMaxResults : 한 페이지에 몇개?? public List findAllPaging(int offset, int limit){ return em.createQuery("select p from Post p order by p.id asc", Post.class) .setFirstResult(offset) .setMaxResults(limit) .getResultList(); } 2. Paging 구현 - Page Page List를 담고있는 List를 사용할 예정. @Data public class Page { private List pages = new..
1. PostController Test 비로그인 유저가 글 등록/삭제/수정을 시도하는 경우 Interceptor에 의해 로그인 화면으로 이동하며, 로그인 시도한 페이지를 QueryParam으로 넘겨준다. /** * 비로그인 유저가 글 작성/수정/삭제 시도하는 경우 * 로그인 화면으로 이동됨 by inteceptor */ @Test void 비로그인_글작성_시도_GET() throws Exception { String redirectUtl = "/login?redirectURL=/posts/new/form"; mockMvc.perform(get("/posts/new/form")) .andExpect(redirectedUrl(redirectUtl)); } @Test void 비로그인_글작성_시도_POST(..
현재 Controller Test목적은 Mock 환경에서 Controller가 의도대로 응답을 하는지 확인하는 것이다. 앞선 글에서는 Controller를 test하기 위해 아래 두 annotation을 사용했다. @WebMvcController @AutoConfigureWebMvc 그 상태에서 DB에 접근하는 등 단순한 slice 이상의 테스트를 진행하기는 어려웠다. 본격적인 test에 앞서 Test와 관련된 annotation을 알아보자. 1. Test관련 Annotaion @SpringBootTest : Spring 통합 테스트 @WebMvcTest : @Controller, @RestController 등을 bean으로 등록함. @Service, @Repository는 스캔 안함. @AutoCon..