본문 바로가기

전체 글

(262)
[spring, mybatis]Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'signInServiceImp' defined in file 잘 되다가 이런 에러가 날 때에는 mybatis에서 xml매핑파일이나 application.properties에서 쿼리의 반환타입을 나타내는 resultType 속성을 잘 확인하자. 이름이 클래스의 바뀌거나 위치하는 패키지가 바뀌었을 때 매퍼.xml, application.properties 파일은 그대로여서 DI에서 에러가 나는듯.
[spring]com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "resultcode" (class dormitoryProj.dto.NaverResult), not marked as ignorable (0 known properties: ]) 네이버 oauth를 연결하던 중 에러가 발생했다. 이유는 Dto클래스인 NaverResult에 getter 또는 setter를 설정하지 않았기 때문임. json to object로 데이터를 바인딩 할 때 jackson의 ObjectMapper를 사용했다. 여기서 ObjectMapper가 json을 object로 변환하기 위해서는(데이터를 바인딩하기 위해서는) 기본생성자와, getter or setter가 필요하다. 이는 직렬화, 역직렬화, 리플렉션(?)키워드가 연관되어 있다. 아직 나도 잘 모름. 쨋든 해결방법은 기본생성자와, getter or setter를 만들어 주면 된다. getter, setter중 하나만 만들면 된다. 직렬화와 관련된 친절한 설명을 찾아서 링크. https://medium.com..
[spring]com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`) 개인 프로젝트 하던 중 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`) 이런 에러가 났다. 구글링 결과 data를 바인딩할 수 없다는 에러임. 에러 타입을 보면 MismatchedInputException이라고 알려주고 있다. 다음 사진에서 주석을 보자. Reponse로 타입을 명시했어야 했는데 String으로 해서 일어난 해프닝이었다.
spring, 네이버 아이디로 로그인, 네이버 API에러 네이버 아이디로 로그인기능을 구현중이다. 다음의 링크에 몇 개의 변수를 붙여서 보내면 URL리다이렉트를 준다고 했다. 아래의 사진에서 restTemplate는 멤버변수로 가지고 있다. 하지만 post방식으로 붙이면 아래와 같은 메시지 뜬다. 분명 get/post 둘다 된다고 적혀있는데 왜인지 모르겠다. 내가 뭔가 잘못했겠지.. @ 검색을 위한 에러의 테스트 내용 위에서 주어진 url과 파라미터를 합쳐서 get방식으로 링크를 만들어서 클릭하면 아래와 같은 창으로 이동한다. @ 참고 state값은 아무렇게나 만들면 된다. 네이버에서 제공하는 예제에서는 random()을 사용해서 임의로 만들었지만 나는 테스트라서 그냥 문자열 하나를 임의로 정했다.
spring, thymeleaf 에러 template might not exist or might not be accessible by any of the configured Template Resolvers 반환형이 string일 때 @ResponseBody를 붙이지 않으면 resources/static/에서 리턴 문자열에 해당하는 html파일을 찾는다. html파일을 찾게 기본설정되어 있음. html파일을 만들어주거나 @ResponseBody를 붙이면 된다.
spring boot, mybatis application.properties 와일드카드. Invalid bound statement (not found): dormitoryProj.dao.UserDao.getAllUser 에러가 떳다. 보통 xml파일의 오타, 공백 등에서 문제가 생긴다고함. 여러 경우가 있겠지만 나의 경우에는 application.properties에서 문제가 생겼다. *xml로 설정하면 에러뜨고 xml파일의 이름을 명시하면 에러가 안나고 잘 동작했다. 원인은 주석이었다. 아래와 같이 설정 다음에 바로 #을 사용해서 주석을 달아놓았는데 주석이 문제였다. 주석을 다른 줄로 바꾸니까 올바르게 동작했다. 반드시 주석은 다른 줄에 써야겠다. mybatis.mapper-locations= file:src/main/resources/static/mybatis/mapper/*.xml #..
intellij root module 이름 변경 사진을 보면 DormitoryProj[DormitoryProj]으로 나와있다. 이는 디렉토리명[모듈명]을 나타낸다. 디렉토리명을 바꾸는 것은 파일탐색기에서 쉡게 할 수 있다. 그럼 이제 []안의 이름을 바꾸기 위해 아래 사진처럼 rename을 하면 root 모듈의 이름은 바꿀 수 없다고 나온다. 이때 file -> project Structure -> projectSettings -> name을 원하는 이름으로 설정. 이후 settings.gradle에서 아래의 내용을 수정한 다음에 인텔리제이를 재시작하면 된다. rootProject.name = '모듈이름' 참고 https://stackoverflow.com/questions/62672357/rename-the-root-module-of-my-proje..
spring boot, mybatis, mysql연동하기 gradle을 사용함. mybatis는 xml로 sql을 다룰 수 도 있는데 그렇게 하려면 application.properties에서 몇가지 설정이 더 필요하다. 이 포스트는 아래의 사진처럼 어노테이션에 sql을 넣는 방식으로 mybatis를 사용할 때의 설정임. 크게 아래의 3단계로 이뤄진다. 1. mysql다운로드 - 구글링 하면 충분히 할 수 있다. 2. gradle에 의존성 설정 3. application.properties설정 @ mysql다운로드 - 구글링 @ gradle 의존성 설정 build.gradle파일에 아래와 같이 설정을 추가. 아래의 2개만 설정해주면 된다. (버전을 명시하는게 부담스러웠는데 아무거나했다.) dependencies{}안에 아래의 내용을 삽입하면 된다. implem..