프로그래밍/Spring 63

[Spring] @DeleteMapping 파라미터로 List 받기

@DeleteMapping일반적으로 HTTP DELETE 요청은 요청 본문에 데이터를 담지 않기에 @RequestParam, @RequestBody를 사용하는 것이 적절하지 않을 수 있음대신 @PathVariable을 사용하여 경로 변수 사용하여 파라미터를 추출함 @PathVariable 사용 예시import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;@RestControllerpublic class ItemController { // Long 리스트를 파라미터로 받는 메소드 @DeleteMapping("/deleteItems/{itemIdList}") public void deleteItems(@P..

[Spring] VO, DAO, DTO 간단한 개념 정리

VO, DAO, DTO 비교 VO는 데이터를 담는 불변 클래스로 사용되고, DTO는 데이터 전송을 위한 가변 클래스로 사용되며, DAO는 데이터 액세스를 추상화하고 실제 액세스를 처리하는 인터페이스와 구현체를 제공함 VO(Value Object) 값 오브젝트로 비즈니스 로직을 포함하지 않고 데이터를 담는 용도로 사용 일반적으로 변경 불가능한(immutable) 객체로 설계하며, 객체의 상태를 변경하는 대신 새로운 객체를 생성하여 전달 read-Only 특징 DTO와 유사하지만 DTO는 setter를 가지고 있으며, 주로 데이터베이스의 엔티티와 매핑되는 불변 클래스로 사용됨 DAO(Data Access Object) 데이터베이스의 data에 접근하기 위한 객체입니다. DAO는 데이터 액세스를 위한 CRUD..

[Spring Security] 인증과 인가 간단 정리

인증(Authentication) 사용자가 누구인지 확인하는 과정 예를 들어, 로그인 시스템에서 사용자가 제공한 아이디와 비밀번호를 검증하여 해당 사용자가 맞는지를 확인하는 과정 대표적인 인증 방법은 사용자 이름과 비밀번호, 생체 정보, 전자서명 등 인가(Authorization) 사용자가 접근하고자 하는 시스템 자원에 대한 권한을 확인하는 과정 예를 들어, 은행 애플리케이션에서 사용자가 인증되었다면, 그 사용자에게 입금, 출금 등의 기능을 수행할 권한이 있는지를 결정 인증은 인가의 전제 조건이 되며, 인증이 완료되어야 인가 과정을 거칠 수 있음 즉, 인증된 사용자가 특정한 작업을 수행하기 위해서는 그 작업에 대한 권한이 있어야 함

[Spring Error] cannot deserialize from Object value (no delegate- or property-based Creator)

cannot deserialize from Object value (no delegate- or property-based Creator) 에러 발생 jackson 라이브러리가 빈 생성자가 없는 모델을 생성하는 방법을 모르기 때문에 발생함 💡 해결 방법 @NoArgsConstructor를 추가하여 빈 생성자 생성 수정 전 코드 👇 @Getter @AllArgsConstructor public class UserLoginRequest { private String userName; private String password; } 수정 후 코드 👇 @Getter @NoArgsConstructor @AllArgsConstructor public class UserLoginRequest { private Str..

[lombok Error] 롬복 설치했으나 @getter@setter 안 먹히는 경우

lombok 설치 후에도 getter, setter 등 에러가 뜨는 경우 lombok 버전 변경 후 재설치를 진행해보기 1️⃣ pom.xml에 lombok 버전 변경 org.projectlombok lombok 1.18.12 provided 2️⃣ lombok.jar 파일 다운로드 ⚙️ 다운로드 링크 pom.xml에 설정해놓은 버전과 동일한 버전 다운로드 후 설치 진행 3️⃣ lombok 설치 관리자 권한으로 cmd 실행 → jdk의 bin 경로 이동 cd C:\jdk경로\bin → java -jar C:\lombok경로\lombok.jar 실행 → Specify location... 클릭 후 eclipse.exe 경로 찾아서 선택 → Install / Update 클릭 → eclipse 재시작

[Spring Error] 메이븐 프로젝트 서버 구동 시 에러 정리(+ pom.xml 플러그인 에러)

서버 구동 시 에러와 pom.xml 에러 정리 1️⃣ 서버 실행시켰으나 아무런 반응이 없는 경우 2️⃣ configuring application listener of class org.springframework.web.context.ContextLoaderListener 에러 3️⃣ pom.xml 쪽에 에러가 뜨는 경우 서버가 실행되는데 파일이 하나도 안 올라옴 Properties > Deployment Assembly 에 경로가 잘 설정 되었는지 확인 예시 이미지처럼 설정이 없다면 설정해주기 ❌ 아무리 설정을 해도 다 지워진다면 {project}/.settings/org.eclipse.wst.common.component 이 파일을 확인해 볼 것 여기 아무것도 추가가 안되어 있다면 직접 설정해주기 ..

[Spring Error] cvc-id.3: A field of identity constraint 'web-app-filter-name-uniqueness' matched element 'web-app', but this element does not have a simple type.

cvc-id.3: A field of identity constraint 'web-app-filter-name-uniqueness' matched element 'web-app', but this element does not have a simple type. 이런 에러가 뜬다면? web.xml에서 상단 web-app 관련 http://java.sun.com 명시된 부분들을 👉 http://JAVA.sun.com 혹은 http://Java.sun.com으로 변경

[Spring Scheduler] 스케줄러 간단한 설정 방법

스케줄러 간단한 설정 방법 정리 프로젝트를 하다보면 스케줄러를 설정해야 할 일이 종종 있음 bean 설정 파일을 수정하고 스케줄러에 등록할 내용만 작성하면 됨 1️⃣ bean 설정 파일 수정 servelt-context.xml에 표시해놓은 내용 추가 코드 예시 👇 2️⃣ Scheduler Service 작성 위의 class에 작성해준 경로와 일치해야 함 5초마다 실행되는 스케줄러 작성 상세 설정이 필요한 경우 cron으로 작성하는 것이 편리 코드 예시 👇 package com.project.solr.common; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @..

[Spring] Required request part 'file' is not present 에러

file 업로드 시 Required request part 'file' is not present 에러가 나는 경우 파일을 넘겨줄 때 required=false를 해주기 @RequestParam(value ="file", required=false) MultipartFile imageFile 꼭 파일이 아니더라도 파라미터를 controller로 넘겨줄 때 contorller에는 RequestParam이 세팅되어 있는데 넘어오는 값이 없는 경우 에러가 남(기본이 required=true 이기 때문) default 값을 설정해줘도 좋음 @RequestParam(required=false, defaultValue="*") String word