<스프링 부트와 AWS로 혼자 구현하는 웹 서비스> 개인적으로 오류났던 부분 체크

mizu·2021년 8월 15일

참고도서 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

AWS 연결까지는 안했고, 네이버랑 구글 아이디 소셜 로그인 하는 것 까지만 봤다.
노션에 오류 난 부분들 따로 적어가면서 체크해뒀던 거, 벨로그로 옮기는 중!

🚨1번


-> @Getter 문제. 추가하니까 변경됨.

🚨2번
java.lang.AssertionError:
Expecting:
<"{"timestamp":"2021-08-04T10:56:30.423+0000","status":404,"error":"Not Found","message":"No message available","path":"/"}">
to contain:
<"스프링 부트로 시작하는 웹 서비스">

at com.jojoldu.book.springboot.web.IndexControllerTest.메인페이지_로딩(IndexControllerTest.java:25)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)

⇒ [https://github.com/jojoldu/freelec-springboot2-webservice/issues/649](https://github.com/jojoldu/freelec-springboot2-webservice/issues/649)

*문제 해결 완료!
templates라는 폴더를 생성하지 않았던 점, 그리고 mustahce 확장자가 아닌 html으로 진행해서 그런 것이였음.

🚨3번

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Wed Aug 04 20:36:47 KST 2021

There was an unexpected error (type=Not Found, status=404).

No message available

→ 오타 발견해서 fix 완, 그런데 글등록 누르면 또 에러 뜸, 이것도 오타 문제인가?

🚨4번

문제 해결 → IndexController에 연결이 안되어있었음.

🚨5번

문제 해결
2021-08-04 23:49:59.438 WARN 73800 --- [nio-8080-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported]
→ PostsApiController에서 PutMapping에 링크가 잘못 걸려있었다.

🚨6번

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.security.oauth2.client-org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Client id must not be empty.

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]

Bean이 없다는 것 = 패키지명 오류 (설정된 패키지가 없다는 것) → application properties 쪽으로 들어가니까 오타 있었음

🚨7번
IntelliJ finished with non-zero exit value 1 오류 수정

IntelliJ IDEA - preferences - Build,Execution,Deployment - Build Tools - Gradle - Build and run → build and run using을 Gradle default에서 IntelliJ IDEA로 변경하면 됨.

🚨8번

맞는 것 

# registration
spring.security.oauth2.client.registration.naver.client-id=아이디
spring.security.oauth2.client.registration.naver.client-secret=비밀번호
**spring.security.oauth2.client.registration.naver.redirect-uri={baseUrl}/{action}/oauth2/code/{registrationId}**
spring.security.oauth2.client.registration.naver.authorization-grant-type=authorization_code
**spring.security.oauth2.client.registration.naver.scope=name,email.profile_image**
spring.security.oauth2.client.registration.naver.client-name=Naver

# provider
spring.security.oauth2.client.provider.naver.authorization-uri=https://nid.naver.com/oauth2.0/authorize
spring.security.oauth2.client.provider.naver.token-uri=https://nid.naver.com/oauth2.0/token
spring.security.oauth2.client.provider.naver.user-info-uri=https://openapi.naver.com/v1/nid/me
spring.security.oauth2.client.provider.naver.user-name-attribute=response
틀린 것

spring.security.oauth2.client.registration.naver.client-id=아이디
spring.security.oauth2.client.registration.naver.client-secret=비밀번호
**spring.security.oauth2.client.registration.naver.redirect-uri={baseUrl}/{action}/oauth2/code/{registrationID}**
spring.security.oauth2.client.registration.naver.authorization-grant-type=authorization_code
**spring.security.oauth2.client.registration.naver.scope=name,email,profile_image**
spring.security.oauth2.client.registration.naver.client-name=Naver

spring.security.oauth2.client.provider.naver.authorization-uri=https://nid.naver.com/oauth2.0/authorize
spring.security.oauth2.client.provider.naver.token-uri=https://nid.naver.com/oauth2.0/token
spring.security.oauth2.client.provider.naver.user-info-uri=https://openapi.naver.com/v1/nid/me
spring.security.oauth2.client.provider.naver.user-name-attribute=response
눈으로 확인하는 거 귀찮아서 아주 간단하게 코딩해서 알아봄

#include <iostream>
using namespace std;

int main()
{
    string str1;
    string str2;
    
    while(true){
        
        cout<<"1:"<<endl;
        cin>>str1;
        
        cout<<"2:"<<endl;
        cin>>str2;
        
        if(str1==str2){
            cout<<"ok"<<endl;
        }else{
            for(int i=0;i<str1.length();i++){
                if(str1[i]!=str2[i]){
                    cout<<str1[i]<<endl;
                    break;
                }
            }
        }
    }
}

구글 로그인만 설정했을 때는 되던 것이 네이버까지 설정하니까 안됨

profile
문제를 해결해보자 ✨

0개의 댓글