// ResponseUser
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResponseUser {
private String email;
private String name;
private String userId;
private List<ResponseOrder> orders;
}
// ResponseOrder.java
import java.util.Date;
public class ResponseOrder {
private String productId;
private Integer qty;
private Integer unitPrice;
private Integer totalPrice;
private Date createAt;
private String orderId;
}
// UserService.java
import com.example.userservice.dto.UserDto;
import com.example.userservice.jpa.UserEntity;
public interface UserService {
UserDto createUser(UserDto userDto);
UserDto getUserByUserId(String userId); // 특정 유저 정보 (UserId기준)
Iterable<UserEntity> getUserByAll(); // 전체 유저 정보
}
// UserRepository.java
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<UserEntity, Long> {
UserEntity findByUserId(String userId);
}
// UserDto.java
import com.example.userservice.vo.ResponseOrder;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class UserDto {
...
private List<ResponseOrder> orders;
}
// UserServiceImpl.java
@Service
public class UserServiceImpl implements UserService {
private UserRepository userRepository;
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Autowired
public UserServiceImpl(UserRepository userRepository, BCryptPasswordEncoder bCryptPasswordEncoder) {
this.userRepository = userRepository;
this.bCryptPasswordEncoder = bCryptPasswordEncoder;
}
...
@Override
public UserDto getUserByUserId(String userId) {
UserEntity userEntity = userRepository.findByUserId(userId);
if (userEntity == null) {
throw new UsernameNotFoundException("User not found");
}
UserDto userDto = new ModelMapper().map(userEntity, UserDto.class);
List<ResponseOrder> orders = new ArrayList<>();
userDto.setOrders(orders);
return userDto;
}
@Override
public Iterable<UserEntity> getUserByAll() {
return userRepository.findAll();
}
}

// UserController.java
@RestController
@RequestMapping("/user-service")
public class UserController {
private Environment env;
private UserService userService;
@Autowired
public UserController(Environment env, UserService userService) {
this.env = env;
this.userService = userService;
}
...
@GetMapping("/users")
public ResponseEntity<List<ResponseUser>> getUsers() {
Iterable<UserEntity> userList = userService.getUserByAll();
List<ResponseUser> result = new ArrayList<>();
userList.forEach(v -> {
result.add(new ModelMapper().map(v, ResponseUser.class));
});
return ResponseEntity.status(HttpStatus.OK).body(result);
}
@GetMapping("/users/{userId}")
public ResponseEntity<ResponseUser> getUsers(@PathVariable("userId") String userId) {
UserDto userDto = userService.getUserByUserId(userId);
ResponseUser returnValue = new ModelMapper().map(userDto, ResponseUser.class);
return ResponseEntity.status(HttpStatus.OK).body(returnValue);
}
}
GET
localhost:8000/user-service/users
List형식으로 잘 나오는 것을 볼 수 있다.
GET
localhost:8000/user-service/users/{userId}
userId로 검색할 수도 있다