728x90
반응형

Project 30

[Spring Boot] Todo 서비스 구현 (1)

프로젝트 구성 도메인을 생성할 때 클래스는 한가지 기능만을 하도록 하는 SRP를 지켰고, 관심사를 분리하여 DIP를 지키기 위해 생각을 하며 코딩했습니다. SRP, DIP에 대한 자세한 설명 [Spring] 객체 지향 설계의 다섯 가지 기본 원칙 - SOLID SOLID 다섯 가지 설계 원칙 단일 책임 원칙(SRP: Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 책임 영역이 확실해지고, 한 클래스의 변경이 다른 클래스의 영향을 미치지 않습 lakelight.tistory.com [Todo.java] package hooyn.todo.domain; import lombok.AccessLevel; import lombok.Getter; import lom..

Project/Todo 2022.07.17

[Refactoring] 관심사 분리를 통한 DIP 지키기

원래 코드 [기존 Member Service 코드 1] [Spring Boot] Member 서비스 구현 (1) domain/Member.java package hooyn.todo.domain; import lombok.*; import org.hibernate.annotations.GenericGenerator; import org.springframework.security.crypto.password.PasswordEncoder; import javax.pe.. lakelight.tistory.com [기존 Member Service 코드 2] 저장 이렇게 오버라이딩 해서 구현을 할 수 있습니다. */ public UUID save(Member member){ em.persist(member); r..

Project/Todo 2022.07.15

[Spring Boot] Member 서비스 구현 (2)

비밀번호 제약 조건 확인 API [ MemberService.java ] /** * 비밀번호 제약조건 확인 */ public boolean checkPasswordConstraint(String userPW){ Pattern pattern = Pattern.compile("^(?=.*[a-zA-Z])(?=.*\\d).{8,20}$"); return pattern.matcher(userPW).matches(); } → 이전에 만들었던 비밀번호 제약조건 확인하는 로직(영문 숫자 포함 8~20자리)으로 API 설계 [CheckPasswordConstraintRequest.java] import lombok.Getter; @Getter public class CheckPasswordConstraintReques..

Project/Todo 2022.07.13

[AWS EC2 ubuntu] MySQL 데이터베이스 구축, 스프링 배포 파일 빌드, 서버 데이터베이스를 이용한 Member API 테스트

AWS EC2 MySQL 데이터베이스 생성 이모티콘도 사용할 수 있는 데이터베이스 생성 mysql> CREATE DATABASE TODO_DB CHARACTER SET utf8mb4 collate utf8mb4_general_ci; 전체 데이터베이스 정보 조회 mysql> SELECT * FROM information_schema.schemata s; TODO_DB 데이터베이스의 default character_set_name과 collation_name 조회 mysql> SELECT default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA -> WHERE schema_name = "TODO_DB"; Member..

Project/Todo 2022.07.12

[AWS EC2 ubuntu] 서버 초기 설정, MySQL 설정

ubuntu 서버 초기 설정 ● 자바 17 설치 설치 가능한 패키지 리스트를 최신화합니다. sudo apt update && sudo apt upgrade -y PPA 가져오기 sudo add-apt-repository ppa:linuxuprising/java -y APT 저장소 업데이트 sudo apt update APT 패키지 관리자를 사용하여 자바 17 설치 sudo apt-get install oracle-java17-installer oracle-java17-set-default ※ Package Configuration 화면이 나오면 Tab 후 Enter - 자세한 화면과 설명 ※ 설치가 잘 되었는지 자바 버전을 확인합니다. java --version [설치 도중 오류 발생] >>> Sub-p..

Project/Todo 2022.07.12

[AWS EC2 ubuntu] WinSCP와 PuTTY를 이용해서 EC2 인스턴스 접속

WinSCP WinSCP는 윈도우에서 사용할 수 있는 FTP 클라이언트 프로그램입니다. 누구나 사용할 수 있는 Free Software입니다. GUI로 표현된 FTP, SFTP 툴이며 드래그 앤 드롭 등을 지원하는 아주 유용한 툴입니다. WinSCP는 Windows용 그래픽 SFTP 및 FTP 클라이언트 프로그램이고, 오픈 소스 프리웨어입니다. 이 프로그램을 사용하여 로컬 컴퓨터와 원격 컴퓨터 간에 안전하게 파일을 복사할 수 있습니다. PuTTY Windows 계열 OS에서 이를 통해 편리하게 리눅스 Shell 이나 Terminal을 이용할수있습니다. Windows에서 PuTTY를 설치하고 EC2 인스턴스의 리눅스에 접근할 수 있도록 ssh 설정과 Key pair설정을 하면 EC2 인스턴스에 접근하여 컨..

Project/Todo 2022.07.11

[AWS EC2 ubuntu] 인스턴스 생성과 보안 그룹 설정

1. 시작화면 AWS EC2 & 인스턴스 시작 클릭 2. 웹 콘솔에서 표기될 태그인 Name 태그 설정 (TODO_API_SERVER) 3. AMI 중 Ubuntu Server 18.04 LTS (HVM), SSD Volume Type 4. 인스턴스 유형 t2.micro 선택 (프리 티어 사용 가능) 5. 인스턴스로 접근하기 위해서는 pem키가 필요합니다. 그래서 마지막 단계는 할당할 pem키를 선택해줍니다. 서버 접속을 위해 꼭 필요한 키이기 때문에 절대 유출하면 안됩니다. 디렉토리에 잘 저장해두고 관리해야 합니다. 기존에 생성된 pem키가 있다면 선택하고 없으면 생성합니다. 6. 보안 그룹 설정 (스프링에서 접속을 위한 포트와 MySQL에서 접속을 위한 포트를 열어줍니다.) 7. 스토리지 20GB로 ..

Project/Todo 2022.07.10

[Spring Boot] 프로젝트 만들기 - spring initializr, build.gradle, application.properties

spring initializr을 통한 프로젝트 만들기 spring initializr https://start.spring.io/ Lombok 자바 라이브러리로 클래스 생성시 반복되는 getter, setter, equals, toString 등의 메서드 작성 코드를 어노테이션 기반으로 자동 생성해주는 라이브러리 입니다. * 코드의 가독성을 높이고 개발의 생산성을 높일 수 있습니다. * Spring Web Spring MVC를 사용하여 RESTful을 포함한 웹 애플리케이션을 빌드합니다. Apache Tomcat을 기본 내장 컨테이너로 사용합니다. Spring Security Spring 애플리케이션을 위한 사용자 정의 가능한 인증 및 액세스 제어 프레임 워크로, Member 테이블의 비밀번호 필드를 ..

Project/Todo 2022.07.07

[기획 및 설계] 프로젝트 테이블 설계 및 예상 API

테이블 설계 ● Member Table Field Type Info member_id UUID Primary Key userID String userPW String Encrypt with Spring Security todo_id Long Foreign Key (1:N) memo_id Long Foreign Key (1:N) member_id 필드는 회원을 식별하기 위한 필드로 UUID를 무작위로 생성해서 자동으로 입력을 할 것입니다. userPW는 Spring Security를 사용하여 암호화 하고 로그인 시에도 복호화 하여 로그인을 진행할 것입니다. todo_id와 memo_id는 member->todo, member->memo, todo->member, memo->member 객체처럼 이동하기 위..

Project/Todo 2022.07.07
728x90
반응형