💻dev/🌱Java+Spring

@NotNull -> null만 걸러냄 ("", " " 같은 데이터는 허용) @NotEmpty -> null, "" 걸러냄 (" " 데이터는 허용) @NotBlank -> null, "", " " 데이터 전부 걸러낸다 해당 어노테이션들에 대해 간단히 정리하자면 위와 같다. 하지만, 블로그로 다시 한번 정리하는 이유는 실무에서 개발을 하다가 놓친 부분이 있었기 때문이다. 바로, 허용되는 변수의 타입! @NotNull해당 필드가 null 값을 허용하지 않음을 나타냄. 이 어노테이션을 사용하면 메소드나 매개변수, 필드 등에서 null 값이 들어오지 않도록 강제할 수 있음. 특징:허용되는 타입: 모든 타입설명: 해당 필드가 null이 될 수 없다는 것을 의미public class User { @NotNull p..
현재 직장에서 진행 중인 프로젝트에서 고민이 생겼다.이전에 개인적으로 팀 프로젝트를 진행했을때는 Req,Res 클래스를 매번 만들어 도메인 별로 관리를 했다. 그러나 실무에서 적용할 때는 가급적 관리할 클래스 수를 줄이고 싶었고, 중복코드를 줄이고 싶었다. 그렇게 고민 끝에 세가지 방안을 내놓게 되는데 .... (사실 서버단은 나 혼자이기 때문에 혼자 먼저 고민한 후 최종으로 클라이언트단과 합의하여 결정했다.)1.목적마다 DTO를 생성한다장점목적에 맞고 필요한 필드만 가지는 DTO를 생성추후 문제가 발생할 여지가 적음불필요한 필드를 프론트 쪽에 노출 시키지 않음각각의 DTO가 유의미한 이름을 가짐(이름으로 의도 파악 가능)단점클래스의 수가 많아짐중복된 코드 다수 발생재사용이 어려움클래스 수가 많아질수록 ..
Service단에 매번 선언되는 에러메시지 상수들…(신경쓰임) 프로젝트 전체에서 공통으로 사용되는 에러 메시지를 한 곳에서 관리하고 싶었다. 중복을 피하고 유지보수성을 높일 수도 있고 가독성도 향상되는 효과를 기대하며 아래와 같이 클래스로 관리하기 시작했다. 변경 전 public class FruitService(){ public static final String FRUIT_NOT_FOUND_MESSAGE = "해당하는 과일 없음" ... } public class VegitableService(){ public static final String VEGITABLE_NOT_FOUND_MESSAGE = "해당하는 채소 없음" ... } public class KitchenService(){ public ..
Annotation이란? Java 소스 코드에 추가하여 사용할 수 있는 메타 데이터의 일종 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할 런타임 시 특정 기능을 실행하도록 정보를 제공 코드의 생산성을 증가 코드량을 감소 유지보수에 용이 Annotation 정의 @Target({ElementType.[적용대상]}) @Retention(RetentionPolicy.[정보 유지되는 대상]) public @interface [어노테이션 이름] { ... } Annotation Name: 어노테이션을 정의할 때는 @interface Target: 어노테이션의 적용 대상 ElementType.TYPE (class, interface, enum) ElementType.FIELD (instance variab..
Spring Boot에서 비밀번호 변경 기능을 구현하려고 한다. 구현 전에 먼저 알아둘 것을 정리해본다. 비밀번호 변경 과정 1. 회원가입이 되어 있는 상태여야 한다. 2. 로그인 상태여야 한다. 3. DB에는 암호화된 password(pw)가 저장되어 있다. 4. 사용자에게 기존 pw와 새로운 pw를 입력 받는다. 5. 기존 pw가 현재 사용자의 pw와 일치한다면 해당 회원의 pw를 새로운 pw로 변경한다. 6. 일치하지 않는다면 오류를 발생시킨다. UpdatePasswordReq @Getter public class UpdatePasswordReq { @NotBlank private String currentPassword; @NotBlank @Pattern(regexp = "(?=.*[a-zA-Z]..
Spring Boot에서 비밀번호 변경 기능을 구현하려고 한다. 구현 전에 먼저 알아둘 것을 정리해본다. 회원 정보 수정 과정 1. 회원가입이 되어 있는 상태여야 한다. 2. 로그인 상태여야 한다. 3. 회원정보 수정 가능한 정보는 닉네임과 프로필 이미지 뿐이다. 4. 사용자에게 닉네임 또는 프로필 이미지를 입력받는다. 5. 닉네임이 변경 됐다면 닉네임 중복체크를 진행한다. 6. 프로필 이미지가 변경됐다면 기존 이미지 파일을 서버에서 삭제 한다. UpdateMemberReq @Getter public class UpdateMemberReq { @NotBlank @Pattern(regexp = "^[ㄱ-ㅎ가-힣a-z0-9-_]{2,10}$", message = "닉네임은 특수문자를 제외한 2~10자리여야 ..
PasswordEncoder 설정하기 Spring Security가 지원해주는 PasswordEncoder를 사용해보자. build.gradle //Spring Security implementation 'org.springframework.security:spring-security-crypto:5.7.1' PasswordEncoder를 @Bean으로 등록 내가 진행한 프로젝트의 경우 Spring Security 적용을 위한 SecurityConfig 클래스에 등록하였다. @Configuration public class SecurityConfig { @Bean public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.crea..
스프링 프레임워크는 애플리케이션의 설정을 관리하고 구성하기 위해 다양한 방법을 제공합니다. 이 중에서도 @ConfigurationProperties와 @ConfigurationPropertiesScan은 애플리케이션의 설정을 효율적으로 관리하고 사용자 정의 설정을 쉽게 구성하기 위해 사용되는 중요한 기능입니다. @ConfigurationProperties란? @ConfigurationProperties는 스프링 프레임워크에서 제공하는 어노테이션으로, 애플리케이션의 설정 정보를 자바 클래스로 바인딩하는 데 사용됩니다. 이를 통해 설정 파일이나 환경 변수에서 가져온 설정 값을 객체로 매핑할 수 있습니다. 예를 들어, 데이터베이스 연결 정보, 외부 서비스 API 키, 애플리케이션의 고유한 속성 등을 자바 객체..
쁜새
'💻dev/🌱Java+Spring' 카테고리의 글 목록