티스토리 뷰

왜 열심히 작업 순서 설계까지 다 하고 갑자기 로그인을 구현하나 싶을 거다.

어제 열심히 쉬었으니 오늘 카페에서 열심히 코딩하며 html 파일을 생성하는데

뭔가 느낌이 이상했다.



"privacy는 사용하는 user의 기본 데이터를 가져오니까…. 그럼…. 회원 가입한 사용자가 필요하니……."

한마디로 정리하자면 작업 순서를 잘못 짰다.

그래서 작업하던 privacy를 잠시 중단하고, login 기능을 구현하기 시작했다.

일단 privacy class에 있는 몇몇 부분이 겹쳐서 그 부분은 나중에 수정하기로 하고

회원가입을 할 때 필요한 데이터를 받을 class를 생성했다.

Repository를 생성하고, User의 이름으로 데이터를 호출할 수 있도록 하였다.

Controller에서 바로 Repository를 호출하지 않고 Service class를 만들어 DB와 관련된 로직을 다루게 하였다.



여기까지는 항상 하던 것이었으니 그리 어렵지 않았으나 이제부터가 시작이다.

graphQL에 관련된 Mutation class와 Query, UserResolver Class를 생성해줘야 하는데 이 부분은 처음 해보는 것이라

사수께서 보내주신 test code를 보고 참조하여 작성하였으며, 이 class들이 왜 필요한지 검색하고,

추측하며 작업하였다.

DB에 있는 데이터를 가져오는 로직이 있는 Query class다.

graphql tools에서 제공하는 GraphQLQueryResolver를 implements 받게 하였고,

앞서 작업한 것과 비슷하게 Mutation Class를 작성해줬는데 이번엔 GraphQLMutationResolver를 implements 받았다.

작업하면서 Query는 DB에서 데이터를 읽어오는 것처럼 느껴지고,

Mutation은 데이터를 가공할 때 사용하는 듯한 것처럼 느껴졌는데, 이 부분은 정확하지 않아서 차차 알아갈 예정이다. 

마지막으로 UserResolver 라는 class를 생성했는데 Query나 Mutation처럼 GraphQLResolver 을 implements 받아

Type로는 User Class를 설정해줬다.

느낌적인 느낌으로는 User Calss 를 Resolver 해주는 Class 같은데

문제는 Resolver이 정확히 뭔지 모르겠다.

검색해봐도 이해가 잘 안 가서 일단 넘어가고 데이터를 주고받기 위해 Run을 했더니....

이제는 친숙하다 못해 내 님보다 더 자주 보는 것 같은 error 님이 다시 출몰하셨다.

Tomcat 관련된 에러인 듯 하며, 구글에 Starting Tomcat context.를

검색했을 때 별로 적절한 해결법을 찾지 못해 아래 내용을 전부 복사하여 검색했다.

org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'graphQLServletRegistrationBean' defined in class path resource [com/oembedler/moon/graphql/boot/GraphQLWebAutoConfiguration.class]: Unsatisfied dependency expressed through method 'graphQLServletRegistrationBean' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'graphQLHttpServlet' defined in class path resource [com/oembedler/moon/graphql/boot/GraphQLWebAutoConfiguration.class]: Unsatisfied dependency expressed through method 'graphQLHttpServlet' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'invocationInputFactory' defined in class path resource [com/oembedler/moon/graphql/boot/GraphQLWebAutoConfiguration.class]: Unsatisfied dependency expressed through method 'invocationInputFactory' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'graphQLSchemaProvider' defined in class path resource [com/oembedler/moon/graphql/boot/GraphQLWebAutoConfiguration.class]: Unsatisfied dependency expressed through method 'graphQLSchemaProvider' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'graphQLSchema' defined in class path resource [com/oembedler/moon/graphql/boot/GraphQLJavaToolsAutoConfiguration.class]: Unsatisfied dependency expressed through method 'graphQLSchema' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schemaParser' defined in class path resource [com/oembedler/moon/graphql/boot/GraphQLJavaToolsAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.coxautodev.graphql.tools.SchemaParser]: Factory method

 

결과적으로 설정에 관한 내용이 잔뜩 나오길래 dependencies를 살짝 바꿔줬다. 

그래 봤자 바뀐 부분은 servlet 옆에 :5.0.0을 붙인 것뿐이지만.

설마 이거 하나로 뭔가 바뀌겠어? 하고 다시 실행해봤는데

웃기게도 error가 변경되었다.

error 메시지를 한번 보니…. 이번엔 설정보단 내부 로직에 관련된 것 같다.

java.lang.IllegalStateException: Error processing condition on com.oembedler.moon.graphql.boot.GraphQLWebAutoConfiguration.graphQLSchemaProvider

문제는 이제 막 접한 기술이기에 아직 전체적으로 어떤 형태인지 감을 잡아가던 중이라

검색을 해봐도 답을 찾을 수 없었던 나는 결국 사수께 연락을 넣었다….



남은 에러는 답변이 온 뒤 해결하는 것으로 하고, 그 사이 TDD 연습이나 하고 있어야겠다.

 

- 회고 -

옷을 만들 때, 어떤 형태로 어떻게 만들어야 할지 보인다.

이건 나도 한 2~3년 해서 보였지 맨 처음부터 보였던 건 아니다.

예를 들면 작은 단위로는 팔의 형태는 일자 형태가 아니라 팔꿈치 아래는 몸쪽으로 살짝 돌아있기 때문에

소매 끝 부분의 중앙을 2.5cm 옮겨야 한다.

큰 단위로 하자면 앞판과 뒤판을 연결한 뒤 팔을 연결해야 한다는 설계 순서를 들 수 있을 것이다.

이처럼 개발도 어떤 것을 할 때 이게 이렇게 되니까 이 작업을 하는 거야. 라는 게 있을 텐데

그게 아직 안 보인다.

나름 하나하나 조금씩이라도 알아가고 있지만, 알 것은 많고 헷갈리는 단어도 많고

아장아장 개발자 지망생인 내가 가야 할 길이 참 멀디먼 것 같다.

그래도 확실히 이번 프로젝트 하면서 다른 개발자 지인분들과 대화할 때

어느 정도 대화가 된다는 것에서 전보다는 쥐꼬리만큼이라도 발전한게 보여 조금 기뻤다.


추가로 요즘 계속 느끼는데 너무 한 게 없는 거 아닐까? 하는 생각이 많았다.

그런데 설정이 반이라고 많이 한 거라는 주변 개발자분들의 이야기를 들으면서 그럴 수도 있겠다는 생각을 많이 했고,

또 내가 이제 취업을 하면 신입으로 들어갈 텐데 설정을 혼자 해본 경험이 현업에 갔을 때 많은 도움이 될 것 같다는걸

많이 느꼈다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함