이전 포스팅
https://turtlejacob.tistory.com/72
jscode - 스프링부트 입문 클래스 (Spring Data JPA 활용과 예외처리). 5
이전 포스팅 https://turtlejacob.tistory.com/71 jscode - 스프링부트 입문 클래스 (Spring data JPA). 4 이전 포스팅 https://turtlejacob.tistory.com/70 jscode - 스프링부트 입문 클래스 (CURD APi). 3 이전 포스팅 https://turtleja
turtlejacob.tistory.com
jscode - 스프링부트 입문 클래스 6회차 학습내용 기록( 2023.07.24 )
학습목표
- 현업에서 자주 쓰이는 java 심화
- controller,service,repository 구분하기
tip
- 변수명, 코드 스타일 신경쓰는 습관 들이자
- 약어 쓰지 않기
- CTRL + ALT + L
자바 고급 처리
- 이 부분은 관련 포스팅으로 참조해주셨는데 따로 한번씩 리뷰를 올려야할꺼 같다.
- strem
- 리스트 타입을 처리하기 좋음
- blilder pattern
- https://readystory.tistory.com/121
- 코드의 가독성을 높여준다.
- 제네릭
controller, service, repository 구분하기
- 스프링에서 말하는 mvc패턴이다
- 내가 여기서 헷갈렸던 부분이 mvc패턴은 model, veiw, controller인데 이게 1대1로 c,s,r에 맵핑시키려고 고민했던 것이다
- 결록적으로 MVC에서 C는 controller에 해당하는 것은 맞지만 m,v은 model, veiw에 1대1로 맵핑되지는 않는다.
- controller
- 요청을 Mapping 해주고, 요청자에게 응답을 전달하는 역할
- @controller, @getmapping, @PostMapping 등을 사용
- Service
- 비지니스 로직을 처리하는 부분
- controller와 repository를 연결하는 계층
- @service 사용
- 이전의 과제에서 controller의 메소드에 내부구현 부분을 분리한다고 생각하면 된다.
- repository
- 데이터베에스를 접근하여 데이터를 다루는 계층
- 애노테이션과 빈
- 각 controller, service, repository의 애노테이션의 내부를 보면 @component을 가지고 있다.
- 이는 스프링이 내부를 scan할 때 확인하고 빈으로 등록하는 애노테이션입니다.
- 이렇게 빈으로 등록된 객체는 다른 클래스에서 사용할 때 new 생성자를 사용할 필요가 없다.
- 이 것은 싱글톤과 관련있는데 빈 컨테이너에 미리 객체를 빈으로 등록해 놓고 중복 생성이 되지 않고 싱글톤으로 관리 되도록 유지하는 기술이다.
과제
- 지금까지 구현했던 controller 메소드 service로 분리하기
- 그동안 실습한 파일을 git에 올렸다 그것으로 대체함
- https://github.com/hojuna/springboot_study_jscode
GitHub - hojuna/springboot_study_jscode
Contribute to hojuna/springboot_study_jscode development by creating an account on GitHub.
github.com
- (심화) 랜덤 id 추가해서 상품 등록하기
public String saveRandomIdProducts(Product product){
Random random = new Random();
while (true){
long idNum= random.nextInt(1000);
if(!productRepository.existsById(idNum)){
ProductEntity index = new ProductEntity(idNum,product.name,product.price);
productRepository.save(index);
return index+" - 성공";
}
}
}
다음 포스팅
'Development studies > spring' 카테고리의 다른 글
jscode - 스프링부트 입문 클래스 (java 과제). 8 (0) | 2023.08.17 |
---|---|
jscode - 스프링부트 입문 클래스 (수업 마무리). 7 (0) | 2023.08.16 |
jscode - 스프링부트 입문 클래스 (Spring Data JPA 활용과 예외처리). 5 (0) | 2023.08.16 |
jscode - 스프링부트 입문 클래스 (Spring data JPA). 4 (0) | 2023.08.16 |
jscode - 스프링부트 입문 클래스 (CURD APi). 3 (0) | 2023.08.16 |