분류 전체보기
-
[Java] extends와 implements의 차이💻Programming/Java 2023. 10. 4. 21:14
우선 extends와 implements 모두 "상속"에 대한 개념이다. Java는 OOP(Object-Oriented Programming) 즉 객체 지향 프로그래밍 언어이다. 🔗 OOP(Object-Oriented Programming) OOP란 객체의 관점에서 프로그래밍한다는 것을 의미한다. OOP는 객체들의 "유기적인 관계"를 통해서 프로세스가 진행된다. OOP의 특징 1. 상속과 인터페이스 2. 다형성(하나의 객체가 여러가지 형태를 가질 수 있다는 것을 의미), 사용 편의성 3. 캡슐화, 정보 은닉 4. 자료 추상화(모델링) 5. 동적 바인딩 🔗 상속 상자 하나하나는 모두 객체이고, 클래스이다. 이러한 계층을 표현하기 위해 만들어진 것이 바로 상속. 상속 시, 하위 객체(자식)은 상위 객체(부모..
-
[Error - SpringBoot] mustache 한글 깨짐 현상💻Programming/Error 2023. 10. 3. 21:26
🔗 오류 발생 상황 mustache에 한글을 써놓고, 테스트 코드를 돌렸는데 assertThat 메서드에서 오류가 발생했다. 스프링 부트로 시작하는 웹 서비스 이런 코드였는데 package com.sujin.book.springboot.web; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.spri..
-
[Server] JWT란?💻Programming/Server 2023. 10. 2. 10:00
JWT란? Json Web Token의 준말로, 그대로 해석하면 Json형식으로된 웹 토큰이라는 말이다. 정보를 비밀리에 전달하거나 인증할 때 주로 사용한다. 일반적으로 클라이언트와 서버 사이에서 통신할 때 권한을 위해 사용하는 토큰이다. JWT는 토큰 자체에 정보를 담는 Self-Contained 형식을 사용한다. Json형태로 주고받기 위해서 표준 규약에 따라 생성한 암호화된 토큰으로 복잡하고 읽을 수 없는 String 형태로 저장되어 있다. JWT의 구성요소 JWT는 헤더(header), 페이로드(paylod), 서명(signature) 세 파트로 나눠져 있으며 아래와 같은 형태로 구성되어 있다. JSON 형태인 각 부분은 Base64Url로 인코딩 되어 표현된다. *Base64Url은 암호화된 문..
-
[Error - JPA] Cannot resolve symbol 'persistence'💻Programming/Error 2023. 9. 25. 11:01
🔗 오류 발생 상황 build.gradle에 JPA관련 코드를 추가해주고, 분명 의존성이 잘 추가된 것도 확인하였는데, import javax.persistence.Column; 위의 코드에서 자꾸 Cannot resolve symbol 'persistence' 와 같은 오류가 났다. 🔗 해결 방법 spring boot3에는 Jakarta EE 9이 포함됨에 따라 javax 관련 패키지명이 javax에서 jakarta로 변경되었다고 한다.-참고(https://thenicesj.tistory.com/391) 따라서 import jakarta.persistence.Column; 위와같이 코드를 바꿔주면 오류가 나지 않는 것을 확인할 수 있다. 책(= 스프링부트와 AWS로 혼자 구현하는 웹 서비스)을 따라하며..
-
[Spring/SpringBoot] 트랜잭션이란? 스프링의 Transactional(feat: AOP)💻Programming/SpringBoot 2023. 9. 25. 00:05
트랜잭션(Transaction)이란? : DB 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위. = 쪼갤 수 없는 여러 작업들을 논리적으로 최소 단위로 묶은 것 트랜잭션의 예시 상황 온라인 쇼핑몰을 결제할 때, 두가지 작업을 거쳐야한다. 1. 판매처에 돈을 보내기 2. 판매처에서 고객이 보낸 돈을 받기 저 두 작업이 한 트랜잭션이라고 하자. 이 경우 고객이 판매처에 돈을 보냈는데 판매처에서 고객이 보낸 돈을 받지 못하는 경우나, 고객이 돈을 보내지 않았는데 판매처에서 돈을 받는 경우가 생기면 안된다. 모든 작업이 성공적으로 완료되어야 작업 결과를 적용(commit)하고, 트랜잭션에 속한 모든 작업 중에(1번이나 2번 둘중에) 하나라도 오류가 발생하는 경우에는 작업을 실행하기 전의 상태로..
-
[Error - Git Bash] You have not agreed to the Xcode and Apple SDKs license. You must agree to the license below in order to use Xcode.💻Programming/Error 2023. 9. 20. 22:51
오류 발생 상황 스터디를 위한 리포를 파일에 클론하려는데 갑자기 이런 오류가 발생했다. 찾아보니 macOS에서 개발을 할 때 XCode와 Apple SDKs(소프트웨어 개발 키트)의 라이선스에 동의해야하는데, 원래 처음 깃 리포지토리 로컬에 클론해본것도 아닌데 갑자기 이런 문구가 떠서 당황스러웠다. (분명 며칠전에도 클론받음.) 찾아보니 XCode의 업데이트 후에 발생하는 에러라고 한다. 후에 엔터를 눌렀더니 여러 라이센스의 내용이 나오고 아래의 화면이 나왔다. 해결 방법 sudo xcodebuild -license 위의 명령어를 입력해준다. 그럼 또 쫘르르 라이센스 내용이 뜬다. By typing 'agree' you are agreeing to the terms of the software licen..
-
[Spring / SpringBoot] Dispatcher Servlet(디스패처 서블릿) 동작 과정 / SpringBoot(스프링부트) 요청, 응답 흐름💻Programming/SpringBoot 2023. 9. 18. 12:34
Dispatcher Servlet이란? DispatcherServlet은 HTTP 프로토콜로 들어오는 모든 요청을 먼저 받아서 적합한 컨트롤러에 위임(Delegate Request)하는 역할을 하는 Front Controller라고 정의할 수 있다. Front Controller란 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러로서, MVC 구조에서 함께 사용되는 디자인 패턴이다. *스프링부트의 주요 기능 중 하나는 자동 구성이다. 따라서 스프링부트 구동시 DispatcherServlet을 서블릿으로 자동 등록하고, 모든 경로"/"에 대해 매핑한다. 정적 자원(Static Resources)의 처리 Dispatcher Servlet이 모든 요청을 처..
-
[SpringBoot] IntelliJ 스프링부트 프로젝트 생성 / 초기 설정(인텔리제이 2023Ver)💻Programming/SpringBoot 2023. 9. 17. 23:01
스프링 이니셜라이저(https://start.spring.io/)를 사용하지 않고 초기 세팅을 해보도록 하겠다. 지금 공부하며 글을 작성하는 책(스프링부트와 AWS로 혼자 구현하는 웹 서비스)은 스프링부트를 제대로 이해하기 위해선 build.gradle에 하나하나 초기 세팅을 해가며 스프링부트 개발환경을 구성해 보는 것을 추천하기 때문에 build.gradle에 하나하나 입력해가며 초기 setting을 해보면 좋을 것 같다. 이 책이 옛날 책이라 그런지 개발환경을 구성하거나 gradle 버전도 옛날거라 좀 다르게 설정해야 하는 부분들이 있어서 그 부분들도 수정해보겠다. IntelliJ에서 New Project 생성 언어는 Java를 사용할 것이기 때문에 Java로 설정해준다. build system으론 ..