본문 바로가기

Spring_SpringBoot

(42)
[ DTO ] vs [ VO ] 항상 쓰면서 왜 다른건지 왜 쓰는건지 모르고 썼다. 반성하자 DTO- 순수하게 데이터를 담아 계층 간으로 전달하는 객체이다. 로직을 가지고 있지 않은 순수한 데이터 객체이며 메서드로는 getter/setter만을 가진다. 다음 예시를 보자. CardDTO라는 곳에 name과 id만을 통한 값을 저장하거나 얻기 위한 코드만 있다.→ 변조가 가능하다. 변조를 원치 않는다면 다음 예시를 보면 해결할 수 있다.   VO(Value Object)- VO의 경우 특정 값 자체를 표현하기 때문에 불변성의 보장을 위해 생성자를 사용하여야 한다.다음의 예시를 보자. private final로 설정하므로 상수(불변)이라는 의미이다. 그러므로 수정이 불가하다. ※ 여기서 equals(동일성)와 HashCode(동등성)에 관..
SpringBoot - LogBack 설정 우선 Logback에 대해서 알아보자. 1) Logback Logback은 오픈소스 로깅 프레임워크이며 SLF4J의 구현체이자, 스프링부트에 기본으로  내장되어 있는로깅 라이브러리이다. 그래서 대부분 log4j2와 logback 중 자신의 프로젝트에 맞는 것을 선택해서 사용하게 된다.log4j2의 경우는 언제 쓰면 될까? 비동기처리가 아주 빠르다는 장점이 있다. 그 전에 Logback은 SLF4J을 상속받아서 쓰는 로깅 프레임워크이다. ex)  Collection 중 Map은 인터페이스이고 실제 구현은 HashMap이나 TreeMap로 쓰는거랑 같은 이치다. 2) SLF4Jslf4j는 여러 로깅 라이브러리들을 하나의 통일된 방식으로 사용하도록 방법을 제공하기 위한 것이다.즉, 로깅 추상 레이어를 제공하는..
[ Mybatis ] If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. java version 불일치 에러 해결하고 나서 바로 실행하니 제목과 같은 에러가 났다.  이 메시지는 프로젝트가 실행되면서 데이터베이스 연결 설정을 찾지 못해 발생하는 일반적인 메시지다. 주된 이유는 Spring Boot가 기본적으로 데이터베이스 설정을 찾기 때문에, 적절한 설정이 없을 때 임베디드 데이터베이스를 사용하려고 시도하기 때문이다. 그래서 내장된 H2같은 DB를 찾는 것이다. 그러므로 해결책은  또 pom.xml을 가는 것이다.  jdbc를 우선은 주석처리했다. 그 후 에러가 해결됐다. 아 그리고 필자의 경우는 mybatis의존성도 주석처리했다.→ 그냥 DB관련된 것은 우선 다 주석처리(필자의 경우는 우선 Controller만 확인하기 위해서 그런 것이다) ※ 꼬꼬무 내장된 DB H2 그럼..
java version 불일치 The project was not built due to "release 22 is not found in the system". Fix the problem, then try refreshing this project and building it since it may be inconsistent 에러가 떴다... 난 17버전 쓰는데  그냥 최근게 가장 좋겠지하고 무의식적으로 사용했다. 고쳐보자 1) pom.xml 들어가기 java 버전 22였던 것을 17로 바뀌었다.  17버전으로 바꾸면 Project 자체에서는 에러가 나지 않지만 실행할 경우 에러가 난다.
REST API, RESTful API REST어떤 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI(Resource)로 GET, POST등의 방식(Method)을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태로 (Representation of Resource)로 표현된다. 1. 자원(Resource)● 모든 자원에는 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.● 자원을 구별하는 URI이다.● Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다. 2. 행위(Verb)● HTTP 프로토콜의 Method를 사용합니다.● HTTP 프로토콜은 GET, POST, PUT, PATCH, DELETE의 Method를 ..
[JSON] vs [XML] 프로젝트를 진행하다가 그냥 JSON이면 JSON인갑다... XML이면 XML인갑다... 하고 썼는데 그 이유를 알아야겠다.. XML정의 : XML(Extensible Markup Language)은 HTML 형식과 같은 태그로 데이터를 표헌하는 방식의 마크업 언어이다.         → 데이터가 어떤 것을 의미하는지 직관적으로 알 수 있지만, 여는 태그와 닫는 태그로 이루어져 용량을 많이              차지 한다. 1) 데이터가 String형식으로 주로 전달한다. JSON같이 따로 지정된 Object가 없다. 2) XML은 보안에 취약하다.  →  XML폭탄은 매우 큰 개체를 반복적으로 참조하여 문서의 크기를 기하급수적으로 증가시키는 공격이다.       Dos공격을 유발할 수 있다.  → DT..
[ War ] vs [ Jar ] 프로젝트할 때 그냥 무지성으로 export를 실행했다. 그 이유를 알아야겠다... JAR(Java Archive)장점 - 독립적인 Java 애플리케이션을 패키징할 수 있고, 실행 가능한 JAR파일로 만들어서 개발자가 쉽게  어플리케이션을 실행할 수 있다.- 압축된 형식으로 클래스, 리소스, 라이브러리 등을 포함하므로 배포와 전달이 용이하다.- Java 애플리케이션의 진입점인 main 메서드를 포함하고 있어 JVM에서 직접 실행하기 때문에 별도의  웹 컨테이너나 서버가 필요하지 않다. 단점- JSP나 서블릿 컨테이너에 대한 표준 기능을 활용하기 어렵다.- 웹 애플리케잇녀에서 동적인 웹 컨텐츠 및 생성 및 관리가 제한적이다. WAR(Web Archive)장점 - Java 웹 애플리케이션을 패키징하는데 최적화..
Redriect vs Forward 프로젝트를 진행하면서 막연히 그냥 복붙만 하고 화면만 나오면 그냥 진행했다... 반성하자... Redirect와 Forward- 특정 URL 접속 시 리다이렉트 또는 포워드가 일어나게 되면 작업 중인 페이지가 전환된다. 리다이렉트와 포워드는  페이지가 전환된다는 점에서 비슷한 역할을 하지만 페이지를 전환하는 주체가 다르다는 큰 차이점이 있다.  리다이렉트는 페이지 전환 주체가 클라언트이며, 포워드는 페이지 전환 주체가 서버이다. Redirect  - 서버에서 클라이언트에서 요청한 URL에 대해 실행을 하고 서버 측에서 다른 URL로 재접속하라고 명령을 하는   것이다. 웹 브라우저는 서버에서 Redirect를 하라는 응답코드인 300번대 코드가 오게 되면, 리다이렉트를 해야되는   URL로 다시 요청을 ..