프로젝트 구조는 아래와 같이 만들었다. 이번에는 게시글 폼(boardwrite.html), 게시글 목록(boardList.html)까지 만들고 컨트롤러, 서비스, repository를 연결해서 게시글을 작성해서 디비에 넣고 글 목록까지 출력하는 것을 구현할 것이다. 🤍게시판 글 작성 구현 먼저 컨트롤러를 작성해 주고 엔티티 작성 Entity(엔티티) : 데이터베이스에 쓰일 필드와 여러 엔티티간 연관 관계를 정의함. Repository 작성 Entity에 의해 생성된 DB에 접근하는 메서드 (EX. findAll()...)들을 사용하기 위한 인터페이스, 위에서 엔티티를 선언함으로써 데이터베이스 구조를 만들었다면 여기에 어떤 값을 넣거나 넣어진 값을 조회하는 등의 CRUD를 해야 쓸모가 있는데 이것을 어떻게..
학원 수료 후 취업 전까지 스프링부트 미니 프로젝트를 하나 더 해보기로 했다. 프로젝트 시작에 앞서 스프링부트와 좀 더 친해지기 위해(??) 유튜브 스프링부트 무작정 따라하기 영상을 보고 게시판을 만들어보려고 한다. 역시 모든 웹 개발의 기초는,,,게시판이지,,😎 🤍인텔리제이 프로젝트 생성 1. Gradle 프로젝트 생성 2. ArtifactId는 board로 지어준다. 3. 의존성 추가 -- 이번에는 타임리프, MySQL을 사용할 거라서 아래와 같이 추가해 주었다. dependencies { implementation('org.springframework.boot:spring-boot-starter-web') implementation('org.springframework.boot:spring-boot..
앞서 Travis CI를 활용하여 배포 자동화 환경까지 구축했지만 배포하는 동안 애플리케이션이 종료되는 문제는 해결되지 않음 => 어떻게 해야 서비스 중단 없이 배포를 계속할 수 있을까? 🤍무중단 배포란? 서비스를 정지하지 않고 배포할 수 있는 방법 AWS에서 블루 그린 무중단 배포 / 도커를 이용한 웹 서비스 무중단 배포 사용자는 서비스 주소로 접속 -> 엔진 엑스는 사용자의 요청을 받아 현재 연결된 스프링부트로 요청을 전달 -> 스프링부트2는 엔진엑스와 연결된 상태가 아니니 요청받지 못함. 배포하는 동안에도 서비스가 중단되지 않음! 🤍엔진엑스 설치와 스프링부트 연동하기 sudo yum install nginx //엔진엑스 설치 sudo service nginx start //엔진엑스 실행 리다이렉션 ..
🤍스프링부트 프로젝트로 RDS 접근하기 책에서는 MariaDB를 사용 중이지만 나는 연결이 한 번에 안 되는 바람에 MySQL로 만들었다. MySQL에서 스프링부트 프로젝트 실행하려면 몇 가지 작업이 필요하다. 1. 테이블 생성, 2. 프로젝트 설정, EC2 설정 🤍RDS에 테이블 생성 1. 먼저 RDS에 테이블을 생성한다. JPA가 사용될 엔티티 테이블, 스프링 세션이 사용될 테이블 2가지를 생성해야 하는데 JPA가 사용할 테이블은 테스트 코드 수행 시 로그로 생성되는 쿼리를 복사해서 사용하면 된다. 2. 스프링 세션 테이블은 schema-mysql.sql 파일에서 가져오면 된다. 3. 테이블 생성 🤍프로젝트 설정 1. MySQL 드라이버를 build.gradle 에 등록한다. implementatio..
🤍EC2에 프로젝트 Cone 받기 먼저 깃허브에 코드를 받아올 수 있게 깃을 설치하고 git clone으로 프로젝트를 저장할 디렉토리를 생성한다. sudo yum install git //EC2에 깃 설치 git --version //설치 상태 확인 mkdir ~/app && mkdir ~/app/step1 //프로젝트 저장할 디렉토리 생성 깃허브 https 주소를 복사해와서 git clone을 진행한다. git clone 복사한 주소 ll 명령어로 프로젝트 코드 전체 clone 받아졌는지 확인. 코드들이 수행되는지 테스트 해보기 ./gradlew test 이 gradlew test에서 정말....많은 고생을 했다....ㅠㅠㅠㅠㅠㅠ 처음엔 될 것 처럼 희망 고문을 하더니... 상쾌한 Build faile..
앞서 진행한 게시판 프로젝트에 이어 본격적으로 서버 배포를 진행해 보도록 한다. 외부에서 본인이 만든 서비스에 접근하기 위해서는 24시간 작동하는 서버가 필수임. => 그중 클라우드가 가장 유리함. AWS는? 첫 가입 시 1년간 대부분 서비스가 무료임. 클라우드에서 기본적으로 지원하는 기능(모니터링, 로그관리, 백업, 복구...)이 많아 개인 및 소규모일 때 개발에 좀더 집중할 수 있음. 많은 기업이 AWS로 이전 중이기 때문에 AWS 사용 경험은 취업, 이직에 도움이 됨. 사용자가 많아 국내 자료와 커뮤니티가 활성화 되어 있음. 🤍AWS 회원가입 이메일주소, 암호, 영문 주소 등등 입력하고 카드도 등록하고~~ 지원 플랜은 기본 플랜(무료) 선택. 가입 완료! 🤍EC2 인스턴스 생성하기 EC2는 AWS에..
지난번에 만든 구글 로그인에 이어 이번에는 네이버 로그인을 추가해 보도록 한다. 1. 네이버 오픈 API 홈페이지로 이동 애플리케이션 - NAVER Developers developers.naver.com 2. 애플리케이션 이름을 입력하고 네이버 아이디로 로그인 선택 3. 서비스 URL 등록.(=구글에서 등록한 리디렉션 URL 같은 역할) 여기까지 마치면 끝! 클라이언트 ID와 비밀번호가 발급된다. 4. application-oauth.properties에 네이버api 관련 키값들을 수동으로 등록한다. 구글과 달리 네이버에서는 스프링 시큐리티를 공식 지원하지 않아 수동으로 입력 필요. user_name_attribute = response : 네이버 회원 조회 시 반환되는 JSON 형태이기 때문에 res..
🔍스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트? 많은 서비스에서 구글, 페이스북 등 소셜 로그인 기능을 사용하는 추세. 그 이유는 직접 구현하는 것보다 OAuth를 써서 구현하는 것이 더 간단하기 때문이다. 로그인 시 보안, 비밀번호 변경&찾기 등등 모든 서비스를 소셜 서비스에 맡기고 그외의 개발에 집중할 수 있다. 🤍구글 서비스 등록 1. 구글 서비스 등록 구글 클라우드 플랫폼 으로 이동해서 프로젝트를 만든다. API 및 서비스로 이동해서 사용자 인증 정보를 만든다. 먼저 동의화면을 구성해준 다음 OAuth 클라이언트 ID를 만들어준다. 스프링 부트2 버전의 시큐리티에서는 기본적으로 {도메인}/login/oauth2/code/{소셜서비스코드} 리다이렉트 URL을 지원하고 있다. 사용자가 별..