JPA 설정
package com.example.euserservice.controller;
import com.example.euserservice.dto.UserDto;
import com.example.euserservice.service.UserService;
import com.example.euserservice.vo.Greeting;
import com.example.euserservice.vo.RequestUser;
import org.modelmapper.ModelMapper;
import org.modelmapper.convention.MatchingStrategies;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/")
public class UserController {
private Environment env;
private UserService userService; //추가
@Autowired
public UserController(Environment env, UserService userService) {
this.env = env;
this.userService = userService;
}
@PostMapping("/users")
public String createUser(@RequestBody RequestUser user){
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
UserDto userDto = mapper.map(user, UserDto.class);
userService.createUser(userDto);
return "Create user method is called";
}
}
✅ 상세 설명
RequestUser타입은RequestBody형태로 전달되기 때문에 어노테이션 작성 필요
💡 실행 시, 'POST' 형식으로 요청해야 함.
➡ 기존에 일반 텍스트 형식으로 특정 문구를 return 했던 것을 코드로 변환
➡ 코드로 변환 시, 정확한 실행 결과를 return 받을 수 있음
@PostMapping("/users")
public ResponseEntity createUser(@RequestBody RequestUser user){
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
UserDto userDto = mapper.map(user, UserDto.class);
userService.createUser(userDto);
return new ResponseEntity(HttpStatus.CREATED);
}
✅ 상세 설명
new ResponseEntity(HttpStatus.CREATED)
- ResponseEntity는 HttpEntity의 확장 클래스로써 HttpStatus 상태 코드를 추가한 전체 HTTP 응답(상태 코드, 헤더 및 본문)을 표현하는 클래스
- 기존의 200 OK 와 함께 작성했던 문구 대신에, 201(=CREATED 성공 코드 값)으로 반환값 변경
(🔗 출처: ResponseEntity 알아보기)

package com.example.euserservice.vo;
import lombok.Data;
@Data
public class ResponseUser{
private String email;
private String name;
private String userId;
}
@Override
public UserDto createUser(UserDto userDto) {
userDto.setUserId(UUID.randomUUID().toString());
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
UserEntity userEntity = mapper.map(userDto, UserEntity.class);
userEntity.setEncryptPwd("encrypted_password"); //구현 전이므로 default값 저장
userRepository.save(userEntity);
UserDto returnUserDto = mapper.map(userEntity, UserDto.class);
return returnUserDto;
}
✅ 상세 설명
mapper.map(userEntity, UserDto.class)를 사용하여userEntity클래스를UserDto클래스 형태로 변환하여 해당 값을 return하여Controller에 전달함.
@PostMapping("/users")
public ResponseEntity<ResponseUser> createUser(@RequestBody RequestUser user){
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
UserDto userDto = mapper.map(user, UserDto.class);
userService.createUser(userDto);
ResponseUser responseUser = mapper.map(userDto, ResponseUser.class);
return ResponseEntity.status(HttpStatus.CREATED).body(responseUser);
}
✅ 상세 설명
UserServiceImpl.java의createUser()의 return 값이UserDto에 저장되어 있음- 해당 값을
mapper.map(userDto, ResponseUser.class)를 통해ResponseUser클래스 형태로 변환- 보여줄 정보를
body에 추가하여 return

