TIL 36

AWS - EC2, RDS 내 SpringBoot 프로젝트와 연결하기

오늘은 단순히 내 SpringBoot 프로젝트와 MySQL을 연동하고 AWS에 배포하는 과정을 적어보려고 한다. AWS 사이트 접속 [https://ap-northeast-2.console.aws.amazon.com/console/home?region=ap-northeast-2#\] RDS 검색, 클릭 데이터베이스 생성 클릭 표준 생성 및 DB 유형 선택 템플릿 선택 DB 이름, 사용자 이름, 암호 입력 DB크기 및 스토리지 설정 연결 - 추가 연결 구성 클릭 퍼블릭 액세스 기능 "예" 선택 및 보안그룹 설정 추가구성 - 데이터베이스 옵션 설정 및 아래의 데이터베이스 생성 클릭. 이름은 알아서 설정하자. 이제 생성한 RDS 포트를 열고 MySQL과 연동해 보겠다. 내가 생성한 DB 클릭. 연결 & 보안 ..

TIL 2023.03.18

다양한 Exception 커스텀하는 방법.

나의 경우는 각각의 상황에따라 발생할 수 있는 Exception을 전부 나눠줬다. @RestControllerAdvice // 요청을 기다리다 exception이 나오면 클라이언트로 보낸다 public class RestApiExceptionHandler { @ExceptionHandler(value = {DuplicatedException.class}) public ResponseEntity handleApiRequestException(DuplicatedException ex) { return ResponseEntity.status(HttpStatus.BAD_REQUEST.value()).body(new ExceptionDto(HttpStatus.BAD_REQUEST.value(), ex.getMes..

TIL 2023.03.16

IOC와 DI란 ??

Spring을 공부하며 ioc와 di 그리고 bean에대해 많이 들어봤을 것이다. 처음에는 뭔지도 모르고 사용하기도 했다. 그래서 오늘은 간단하게라도 개념을 짚어보고자 한다. 1. Bean Ioc가 관리하는 자바 객체 @component, @service, @repository, @controller 같은 주석을 통해 구성 및 정의. 사용 방법은 아래 확인. 2. IOC (Inversion Of Control) 제어의 역전객체를 제어하고 관리하는 역할이 개발자로부터 스프링 컨테이너에 역전 된다는 뜻이다. 기존에는 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고 연결했지만, 스프링 컨테이너를 사용하면 프로그램에 대한 제어 흐름에 대한 권한은 모두 스프링 컨테이너가 가지게 된다. 아래 예시를 들어보겠다..

TIL 2023.03.12

Usecase - 유스케이스 다이어그램

유스케이스란? 시스템과 사용자의 상호작용을 다이어그램으로 표현한 것이다. 쉽게 말하자면 시스템의 서비스와 기능 그리고 사용자의 관계를 한눈에 보기 쉽게 정리한 표 라고 생각하면 될 것이다. 위의 그림은 참고 정도만 해두고 여기서 봐야할 것은 아래와 같다. 고객, 관리자, 회원 등은 액터. 회원관리, 회원가입, 글쓰기 등, 개발할 모든 프로그램은 시스템. 사용자 입장에서 바라본 회원이 사용할 기능은 유스케이스. 각각의 연관을 보여주는 관계. 크게 네 가지로 구분하여 생각하면 될 것 같다.

TIL 2023.02.27

자바 - 약한 결합 및 약한 의존성

자바와 객체지향에대해 공부하다보면 약한 결합, 약한 의존성 등의 단어를 들어봤을 것이다. 나중에 코드의 수정이나 재사용을 쉽게 하기위함 이라고 생각하면 편할 것이다. 아래의 코드를 예로 들어보겠다. public class PublicTransport { void move() { Bus bus = new Bus(); bus.move(); } public static void main (String[] args) { PublicTransport p = new PublicTransport(); p.move(); } } // 대중교통 class Bus { void move() { System.out.println("움직이다"); } } // 버스Bus 클래스와 PublicTransport 클래스가 있다. 만약 ..

TIL 2023.02.25

자바 - 객체지향 프로그래밍의 4가지 특징 (캡슐화, 추상화, 상속, 다형성)

섯다카드 20장을 포함하는 섯다카드 한 벌(SutdaDeck클래스)을 정의한 것이다. 섯다카드 20장을 담는 SutdaCard배열을 초기화하시오. 단, 섯다카드는 1부터 10까지의 숫자 가 적힌 카드가 한 쌍씩 있고, 숫자가 1, 3, 8인 경우에는 둘 중의 한 장은 광(Kwang)이 어야 한다. 즉, SutdaCard의 인스턴스변수 isKwang의 값이 true이어야 한다. --- 문제 코드 --- class SutdaDeck { final int CARD_NUM = 20; SutdaCard[] cards = new SutdaCard[CARD_NUM]; SutdaDeck() { // (구현) 배열 SutdaCard를 적절히 초기화 하시오. } } class SutdaCard { int num; bool..

TIL 2023.02.23

자바 - 상속

자바에서 말하는 상속이란? 두 개의 클래스를 부모와 자식으로 관계를 맺어주는 것이다. 말만 들었을 때는 이해가 어려울 수 있다. 하지만 아래 코드를 보면 이해가 편할 것이다. class Point { // 부모 클래스 Point int x = 5; int y = 1; } class Point3D extends Point { // 자식 클래스Point3D가 부모 Point 클래스를 상속받음 int z = 3; } class PrintPoint { public static void main (String[] args) { Point p = new Point(); System.out.println(p.x + p.z + p.y); } }먼저 위의 코드를 실행하기 위해 main 메서드에서 p라는 참조변수를 이용해..

TIL 2023.02.22

자바 - 객체지향

흔히 자바는 객체지향언어 이고 중요한 것은 "객체" 라고 많이들 말한다. 그러면 객체는 무엇이고 객체지향언어의 장점은 무엇인가?? 라는 궁금함이 있다. 객체 자바에서 instance 라고 불리며 사전적 정의는 "실제로 존재하는 것" 이다. 하지만 자바를 공부하며 이게 무슨 소린지 이해가 안되기도 한다. 단순히 자바 클래스에 저장된 내용대로 메모리에 생성된 것 이라고 생각하자. 우리집에 있는 TV를 예로 쉽게 말하자면 TV의 속성(색깔, 브랜드 등)이 다 다르고 기능(전원켜는 기능 및 채널을 옮기는 기능)들이 있을 것이다. 여기서 속성 = 변수 | 기능 = 메서드 선언 이라고 알고 넘어가면 이해하기 쉽다. 이러한 것들을 "클래스"에 기본적으로 담아두고 main에서 객체 생성 후 가져다 사용하거나 변경할 수..

TIL 2023.02.21

Java - 조건문 그리고 반복문.

if (조건식) { 참일 때 실행하는 문장; } else { 거짓일 때 실행하는 문장; }조건문에 대한 설명을 보고 이해하는데 어렵지 않았다. 값을 비교하고 참일 때 실행문과 거짓일 때의 실행문 이 두가지면 끝나는데 얼마나 쉬운가? 하지만 문제를 풀면 풀수록 생각은 많아졌고 조건도 까다롭게 변형되어 금새 어려워졌다. for (초기화; 조건식; 증감식) { 조건식 결과가 참인 동안 반복적으로 실행; }반복문 또한 개념은 어렵지 않았다. 반복문과 조건문은 같이 쓰이는 경우가 많아 잘 알아두면 나중에 머리아픈 경우가 줄어들 것이다. int[] ballArr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] ball3 = new int[3]; // 배열 ballArr의 임의의 요소를 골라서 ..

TIL 2023.02.14

Java - 변수

변수 선언 방법. 1. 변수타입 변수명; int age; int age = 28; int age = 28, num = 5; 3번의 경우는 타입이 같은 변수를 여러개 설정하는 경우이다. 2. Camel case int myAge = 28; 맨 처음 단어인my는 소문자로 써주고 두번째 단어인age의 앞 글자만 대문자로 써주는 방식. 보통 Camelcase는 변수를 설정할 때 두번째 단어부터 앞글자를 대문자로 써주는 방식이다 3. 변수 초기화 초기화란 변수에 처음으로 값을 저장하는 것을 의미한다. 간단히 문제를 풀어보자면, System.out.println("1" + "2"); // String 12 System.out.println(true+""); // true System.out.println('..

TIL 2023.02.13