public interface PostService {
//클라이언트에서 보낸 PostDto를 입력해서 새 포스트 생성(리턴값으로 생성된 postDto)
PostDto createPost(PostDto postDto);
}
@Service
public class PostServiceImpl implements PostService {
private PostRepository postRepository;
// 단일 생성자인 경우는 추가적인 autowired 어노테이션이 필요 없다.
public PostServiceImpl(PostRepository postRepository) {
this.postRepository = postRepository;
}
@Override
public PostDto createPost(PostDto postDto) {
// PostDto => Post 변환
Post post = new Post();
post.setTitle(?);
post.setContent(?);
post.setDescription(?);
// DB에 새 포스트 저장 (리턴 Post)
Post newPost = postRepository.save(post);
// Post => PostDto 변환
PostDto postResponse = new PostDto();
postResponse.setId(?);
postResponse.setTitle(?);
postResponse.setContent(?);
postResponse.setDescription(?);
return postResponse;
}
}
@RestController
@RequestMapping("/api/posts")
public class PostController {
private PostService postService;
public PostController(PostService postService) {
this.postService = postService;
}
@PostMapping
public ResponseEntity<PostDto> createPost(@RequestBody PostDto postDto) {
PostDto postResponse = postService.createPost(postDto);
return new ResponseEntity<>(postResponse, HttpStatus.CREATED);
}
}
참고
https://madplay.github.io/post/why-constructor-injection-is-better-than-field-injection
https://cheershennah.tistory.com/179
픽서님 안녕하세요?
Rest Api 따라서 만들고 있습니다.
그런데 해당 게시글의 PostServiceImpl에서 "?"는 어떤 의미인지 여쭤봐도 될까요?