[책 읽기]
블로그 - 기억보다 기록을
깃허브 - http://bit.ly/fr-springboot
* 이 책에서 개선하려고 한 포인트
* 코드
- DB에 들어갈 date 필드 처리방식
- Setter 메서드로 도배된 Entity 클래스들
- @Autowired로 도배된 Spring DI 코드
- System.out.println()으로 이루어진 테스트 코드
* 운영 환경
- 배포된 서버와의 DB연결
- 배포 서버의 리눅스 기본 설정
- DB의 여러 설정들
- 직접 CI/CI 환경을 구축하는 방법
- 무중단 서비스를 위한 배포 방법
- Nginx의 설치 및 설정
- AWS RDS 필수 설정
- AWS EC2의 Security Group, EIP 등 기본설정
- Travis CI의 기본 설정
- 따로 알아봐야 할 내용들
- Eclipse와 intelliJ 중 Java 개발에 더 좋은 것에 대한 의견
- IntelliJ 사용방법 및 단축키
- mavenCentral, jcenter
- 빌드 도구, Gradle, maven 차이점
- TDD, DDD
- lombok
- assertJ
- ORM, SQL Mapper 구분
- JPA dirty Checking
- JPA Auditing, JDK 8 이전의 Date와 Calendar 클래스의 문제점, 그리고 개선된 LocalDate
- JPA, Hibernate, Spring Data JPA의 관계
- Spring Data Jpa를 이용하여 관계형 데이터베이스를 객체지향적으로 관리하는 방법
- 서버 템플릿 엔진과 클라이언트 템플릿 엔진
- 서버 사이드 렌더링, 클라이언트 사이드 렌더링
- 템플릿 엔진 종류 및 차이점
- 스프링 부트 및 모듈 사용 시 기본 폴더 경로
- CDN
* 정리본
2020/05/27 - [Edu/SpringBoot] - [SpringBoot] IntelliJ에서 SpringBoot시작하기
2020/05/27 - [Edu/SpringBoot] - [SpringBoot] UnitTest 환경 만들기
2020/05/28 - [Edu/SpringBoot] - [SpringBoot] lombok 설정 및 테스트
2020/05/28 - [Edu/SpringBoot] - [SpringBoot] Spring Data JPA 설정
2020/05/28 - [Edu/SpringBoot] - [SpringBoot] 설정파일 yaml로 변경하기
2020/05/28 - [Edu/SpringBoot] - [SpringBoot] Posts API 만들기
2020/05/28 - [Edu/SpringBoot] - [SpringBoot] JPA Auditing
2020/05/28 - [Edu/SpringBoot] - [SpringBoot] Mustache
2020/05/29 - [Edu/SpringBoot] - [SpringBoot] 게시글 등록
2020/05/29 - [Edu/SpringBoot] - [SpringBoot] 게시글 전체 조회
2020/05/29 - [Edu/SpringBoot] - [SpringBoot] 게시글 수정
2020/05/29 - [Edu/SpringBoot] - [SpringBoot] 게시글 삭제
2020/05/31 - [Edu/SpringBoot] - [SpringBoot] Spring Security & OAuth 2.0 로그인
2020/05/31 - [Edu/SpringBoot] - [SpringBoot] OAuth2 Google Login
2020/05/31 - [Edu/SpringBoot] - [SpringBoot] 로그인 & 포스팅 권한 테스트
2020/05/31 - [Edu/SpringBoot] - [SpringBoot] 어노테이션 기반 세션 처리 ArgumentResolver
2020/06/01 - [Edu/SpringBoot] - [SpringBoot] 세션 저장소로 DB이용하기
2020/06/01 - [Edu/SpringBoot] - [SpringBoot] OAuth2 Naver Login
2020/06/02 - [Edu/SpringBoot] - [SpringBoot] 기존 테스트에 시큐리티 적용
* 정오표를 통해 책에 의도대로 따라가기
* 이 책은 JDK 1.8, Gradle 4.8을 기준으로 작성되었다는 것을 확인 해야 함
* 내 프로젝트 생성 시 환경을 맞추고 시작해야 책에서 의도한 대로 따라갈 수 있음
* 책 대로 했는데 안되면 "나는 이길이 아닌가보다" 라는 생각을 갖게 됨..
* 서비스 로직 구현할 때 dto -> Service -> Controller 순으로 따라하는게 이해가 쉬움
p.71 lombok Issue
intelliJ 설치 시 Gradle 5버전으로 사용되고 있어서 Gradle 4로 다운드레이드 필요
[Gradle 버전 확인하기 gradle-wrapper.properties]
요약: 현재 프로젝트의 Terminal을 열어 아래 명령어를 복사해서 붙이면 Gradle 다운그레이드할 수 있음
gradlew wrapper --gradle-version 4.10.2
p.100 PostsApiController.save() Test Issue
save메서드를 보면 @putMapping(...)라고 되어 있는데 내용을 보면 Post 내용이기 때문에 @PostMapping으로 변경
p.111 PostsApiController.update() 취소 기능 Issue
PostsUpdateRequestDto 클래스 작성
Posts 클래스 내에 update() 작성
p.176 .ignore 파일에 application-oauth.properties 제외 했는데도 commit 할 때 계속 뜨는 경우
application-oauth.properties 파일이 이미 tracked 되고 있는 상태에서
.ignore 파일을 업데이트 할 경우 제대로 적용이 안되고
commit할 때 계속 나오는 경우가 존재한다.
해결책은 캐시를 비워 .ignore 파일이 제대로 적용되도록 한다.
p.194 권한 변경 후 글 등록 시
1. Application 실행
2. OAuth를 이용하여 구글 로그인 ( h2에 데이터가 들어가는 시점 )
3. h2-console에서 권한 수정 udate usr set rold = "USER"; ( 이때 세션에는 아직 GUEST로 저장되어 있음 )
4. 세션 정보를 최신화 시키기 위해서 로그아웃 후 다시 로그인해서 게시글 등록 시도
p.326 Travis CI .travis.yml 설정 후 build 이슈
./gradlew: Permission denied git에 permission을 업데이트 해줘야 travis가 실행할 수 있다.
.travis.yml에 before_install을 추가하여 permission을 바꾸는 방법
Git update를 통해 직접 permission을 바꾸는 방법
p. 338 S3 region 확인
AWS S3 대시보드 -> 생성한 bucket 클릭 -> 속성 -> 정적 웹 사이트 호스팅 클릭 시 엔드 포인트에서 확인 가능
p. 394 무중단 배포 테스트 후 게시물 등록 테스트
오류가 당연한 것이 security에서 처음 로그인한 상태가 GUEST이기 때문이다. USER로 변경 해줘야 게시물 등록을 할 수 있다.
[구현 설계]
- @GetMapping("/") String index(Model model, @LoginUser SessionUser user)
- @PostMapping("/api/v1/posts") Long save(PostsSaveRequstDto)
- @GetMapping("/api/v1/posts/{id}") PostsResponseDto findById(Long id)
- @PutMapping("/api/v1/posts/{id}") Long update(@PathVariable Long id, @RequestBody PostsUpdateRequestDto requestDto)
- @DeleteMapping("/api/v1/posts/{id}") Long delete(@PathVariable Long id)
'책' 카테고리의 다른 글
[책] 자바 성능 튜닝 이야기 (0) | 2019.07.07 |
---|