
[ build.gradle 체크 ]

dependencies {
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation group: 'com.auth0', name: 'java-jwt', version: '4.3.0'
implementation group: 'org.qlrm', name: 'qlrm', version: '4.0.1'
implementation group: 'org.mindrot', name: 'jbcrypt', version: '0.4'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-mustache'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
* validation 없으면 유효성 검사 불가
lang3 패키지는 엄청나게 많은 함수를 가지고 있음
문자열을 가지고 놀 수 있는 함수들이 많음
[ 수정해주기 ]

200에 대한 결과 값을 줄 때, 비밀번호도 함께 줄 필요 없다
[ SessionUser 클래스 생성 ]
package shop.mtcoding.blog.user;
import lombok.Data;
import java.sql.Timestamp;
@Data
public class SessionUser {
private Integer id;
private String username;
private String email;
private Timestamp createdAt;
public SessionUser(User user) {
this.id = user.getId();
this.username = user.getUsername();
this.email = user.getEmail();
this.craetedAt = user.getCreatedAt();
}
}
엔티티를 들고 오게 되면 일관성이 맞지 않기 때문에 SessionUser 클래스를 만들어줌
[ Service ]
public SessionUser 로그인(UserRequest.LoginDTO reqDTO){
User user = userJPARepository.findByUsernameAndPassword(reqDTO.getUsername(), reqDTO.getPassword())
.orElseThrow(() -> new Exception401("인증되지 않았습니다"));
return new SessionUser(user);
}
이제 모든게 다 엔티티를 응답하지 않게 됨
[ 컨트롤러 ]
@PostMapping("/login")
public ResponseEntity<?> login(@RequestBody UserRequest.LoginDTO reqDTO) {
SessionUser sessionUser = userService.로그인(reqDTO);
session.setAttribute("sessionUser", sessionUser);
return ResponseEntity.ok(new ApiUtil(null));
}
[ 회원 수정도... ]
@Transactional
public SessionUser 회원수정(int id, UserRequest.UpdateDTO reqDTO){
User user = userJPARepository.findById(id)
.orElseThrow(() -> new Exception404("회원정보를 찾을 수 없습니다"));
user.setPassword(reqDTO.getPassword());
user.setEmail(reqDTO.getEmail());
return new SessionUser(user);
} // 더티체킹
Share article