본문 바로가기
백엔드/스프링+boot

Service

by 임지혁코딩 2023. 12. 21.

모든 서비스 개발의 핵심. serivce.

 

여러방식이 있지만 가장 간단명료한 인터페이스 상속 방식을 활용하는 것을 최우선으로 해보겠다. 

 

private fianl로, 생성했던 todo repository를 받아서 사용한다. 

 

service이며, 모든 파라미터를 받는 생성자를 만든다

 

이전 프로젝트에서는 service 어노테이션 대신 직접 의존성을 주입하였는데, 이번에는 어노테이션을 활용하여 service가 사용할 레퍼지토리가 무엇인지를 명확히 제시 하였다. 

 

해당 메소드가 , service의 주된 사용을 알려주는 예시라고 생각하여 이를 블로그에 올려본다.

가장 먼저 db에 들어갈 entity를 생성한다. id는 자동생성으로 pk로 사용하였기 때문에 따로 set하지 않고,

나머지 칼럼들을 set한다. 그 후 return이 핵심 내용이 되는데, toDoEntity는 add함수 호출하며 생성되는 것이고.

return에서 this는 , todoservice를 의미한다. 자바의 간단한 코드 공부만으로는 instance에서 객체를 사용한 적이 없기 때문에 자꾸 내가 이 this를 todoentity와 혼동하는데 그러지말자. 그 이후 todorepository를 불러 save기능을 사용하고(엄밀히 말하자면 jparepository에서 구현된 기능), todoentity를 db에 저장하고 return으로 저장한 entity를 보여준다.

아래는 간단한 save의 설명. 

 

#잠깐,

class 대신 record를 사용하면 (자바 14부터) plublic record people(inta,intb) 

-> 바로 불변의  객체가 생성될 수 있다. 

 

그 이후 내부 method로 of를 사용하면, 다시 인스턴스를 생성할 수도 있다.

 

-- 코로나 줄서기 프로젝트로 시작 되는 SERVICE 상세부 .

 

@sERVICE로 네이밍을 반드시 할 필요는 없다. 

1. INTERFACE -> 기능문서로 관리하면 굉장히 유리하고, 유지보수에 쉽다.

나는 이방식을 주로 사용해야겠다. 

 

 

2. CLASS만 사용하면, 결합도는 증가하지만 작성은 쉽다. 

 

이번 코로나 줄서긴 이걸로 진행하겠다. 

 

어지간하면 객체 그자체로 return 하는 type method보단, OPtional로 return하자 -> null이 처리되었을때, 빈 객체가 와서 확인가능 

 

--테스트부 살짝 추가 --

 

repository- >Service로 들어가는 형때일떄,

@Extendwith(MockitoException.class)로,

@InjectMocks는 private EventService service

@Mocks EventRepository repository로 두면 test에서도 이를 주입해 줄 수 있다. 

 

SERVICE와 CONTROLLER의 기능상 차이가 있는데,

SERVICE는 실제 일을하고. CONTROLLER는 해당 일을 한 후 그 객체의 REPONSE(혹은 그 객체)를 RETURN 받는다.

 

Exception -> try, catch는 주로 여기서 발생시키자 . (특정 exception이 있을때)

'백엔드 > 스프링+boot' 카테고리의 다른 글

테스트  (0) 2023.12.25
Controller  (0) 2023.12.21
Repository  (0) 2023.12.21
구현  (1) 2023.12.20
java version 안맞을때  (0) 2023.12.20