목록책 (9)
어디까지 갈 수 있을까?
1. 프로젝트 화면 구성 기능 URL GET/POST 기능 Redirect URL 목록 /guestbook/list GET 목록/페이징/검색 등록 /guestbook/register GET 입력 화면 /guestbook/register POST 등록 처리 /guestbook/list 조회 /guestbook/read GET 조회 화면 수정 /guestbook/modify GET 수정/삭제 기능 화면 /guestbook/modify POST 수정 처리 /guestbook/read 삭제 /guestbook/remove POST 삭제 처리 /guestbook/list 깔끔 그 자체,,, 나도 플젝 할 때 URL 이렇게 정리해야 겠다 2. BaseEntity @MappedSuperclass //테이블로 생성되지..
1. 라이브러리 추가 https://start.spring.io/ 에서 해당 라이브러리들 추가하고 진행하면 편하다 2. Spring Data JPA 사용하기 작업 메서드 insert save select findByID update save delete deleteById INSERT와 UPDATE에 동일하게 save()를 사용하는데 객체를 비교하고 없다면 insert, 존재한다면 update가 된다 deleteBy는 실제 개발에서는 많이 사용되지 않는데 한 번에 삭제가 이루어지는 것이 아니라 각 엔티티 객체를 하나씩 삭제하기 때문이다. 이 때문에 @Query를 이용해서 비효율적인 부분을 개선한다 3. @Commit 테스트 코드에는 기본적으로 롤백 처리돼 결과가 반영되지 않는다. @Commit 어노테이션..
지금까지의 서비스는 새로운 Jar가 실행되기 전까진 기존 Jar를 종료시켜 놓기 때문에 서비스가 중단된다. 이를 해결하기 위해 우리는 엔진엑스를 이용해 '무중단 배포' 를 해볼 것이다 엔진엑스의 기능 중 리버스 프록시는 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 행위를 말한다 무중단 배포의 운영과정을 요약하자면, 일단 포트를 두 개 둔다. 예를 들어 현재 엔진엑스가 8081포트와 연결돼있으면 8082 포트에서 신규 배포 진행 후 엔진엑스가 바라보는 포트를 8082 포트로 바꾸고, 또 신규 배포가 필요하면 8081 포트에서 신규 배포 진행 후 엔진엑스가 바라보는 포트는 8081로 바꾸면 된다. 사용자는 엔진엑스가 바라보는 포트의 프로그램을 사용하게 된다 엔진엑스 설치와 스프링 부트 연동하기 EC2 ..
EC2에 프로젝트 Clone 받기 EC2에 접속해서 깃 설치 sudo yum install git git --version 프로젝트를 저장할 디렉터리 생성 mkdir ~/app && mkdir ~/app/step1 cd ~/app/step1 git clone 깃허브 주소 cd 프로젝트명 ll 프로젝트 코드들이 모두 있으면 성공 코드들이 잘 수행되는지 테스트로 검증 ./gradlew test gradlew 실행 권한이 없다고 뜨면 chmod +x ./gradlew 배포 스크립트 만들기 배포 : 작성한 코드를 실제 서버에 반영하는 것 vim ~/app/step1/deploy.sh #!/bin/bash REPOSITORY=/home/ec2-user/app/step1 PROJECT_NAME=spring_web_..
IaaS(Infrastructure as a Service) IT 인프라 대여(가상머신, 스토리지, 네트워크, 운영체제 등) AWS EC2 PaaS(Platform as a Service) IaaS를 한 번 더 추상화 빈스톡 SaaS(Software as a Service) 소프트웨어 서비스 구글 드라이브 AWS EC2 인스턴스 EC2(Elastic Compute Cloud), AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버, 가상머신 aws.amazon.com/ko/portal.aws.amazon.com/billing/signup#/start 30GB까지 프리티어 이용 가능 EC2의 이름 HTTPS의 기본포트는 443, HTTP의 기본 포트는 80 지정된 IP에서만 SSH 접속이 ..
스프링 부트 1.5와 스프링 부트 2.0에서 시큐리티 설정의 차이점 스프링 시큐리티를 이용한 구글/네이버 로그인 연동 방법 세션 저장소로 톰캣/데이터베이스/메모리DB가 있으며 이 중 데이터베이스를 사용하는 이유 ArgumentResolver를 이용하면 어노테이션으로 로그인 세션 정보를 가져올 수 있다는 것 스프링 시큐리티 적용 시 기존 테스트 코드에서 문제 해결 방법 스프링 시큐리티 스프링 기반 애플리케이션의 보안(인증(로그인), 권한부여(guest, user, member, admin 구분))을 담당하는 프레임워크 스프링 시큐리티와 스프링 시큐리티 OAuth2 클라이언트 * Oauth 란? Open Authorization, Service Provider(구글 페이스북, 카카오 등)에서 제공하는 Aut..
#게시글 저장(도메인) -Posts(엔티티) -PostsRepository #게시글 저장 테스트 @After cleanup(){deleteAll} 리포지토리에 엔티티 객체 저장하고 잘 불러와지는지 테스트 #게시글 등록/수정/조회 API 만들기 Request 데이터 받을 Dto API 요청 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장 Service save()는 추가 뿐만 아니라 수정에도 사용한다. save()는 이 객체가 새로운 객체인지 기존 객체인지 판단하여, 새로운 객체가 아닌경우 EntityManager의 merge쪽으로 보낸다. repository.save() 하면 엔티티 객체 반환 delete말고 모두 entity 관련 객체를 반환한다 Controller에서 서비스에 Dto..
템플릿 엔진 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 스프링에서 권장하는 템플릿 엔진에는 머스테치, Thymeleaf가 있다 서버 템플릿 엔진과 클라이언트 템플릿 엔진 리액트, 뷰 - 클라이언트 템플릿 엔진 서버에서 일단 빈 html을 보내고 js를 다 읽고 화면을 그림 단 : 첫 화면을 보기까지 걸리는 시간이 길다 Jsp, Freemarker - 서버 템플릿 엔진 서버에서 모든 데이터를 만들어 클라이언트에 html만 보냄 기본 페이지 만들기 1. build.gradle에 의존성 추가 compile 'org.springframework.boot:spring-boot-starter-mustache' 2. index.mustache 생성 더보기 스프링 부트로 시작하는 웹서비스..