본문 바로가기
사이드 프로젝트/To-do 캘린더 프로젝트

Spring boot 프로젝트 AWS 배포 오류 해결기록(4)

by Baley 2022. 9. 2.

FTP로 bootJar를 넣은 이후 더 이상 cannot execute binary file 에러는 뜨지 않고 배포 스크립트를 실행할 때는 별 다른 오류가 나지 않지만 여전히 배포가 되지 않는다. 배포 스크립트 실행 후 로그를 기록하는 nohup.out을 확인해보니 Unsatisfied Dependency Exception 에러가 뜬다.

1.문제점: Unsatisfied Dependency Exception-Could not resolve type alias

Unsatisfied Dependency Exception 에러가 나는 원인은 다양하지만 그 원인을 파악하기 위해 쭉 읽어보면 결국 Could not resolve type alias 가 원인인 것을 알 수 있다.

 

2. 원인: Could not resolve type alias

Spring Boot에서 MyBatis를 사용할 때 sql을 적은 mapper에서 result type을 명시한다. result type을 명시할 때 리턴되길 바라는 클래스의 디렉토리 위치를 일일이 적을 수도 있으나 application.properties 나 mybats-config.xml에 type-aliaes-package 설정을 통해 디렉토리 위치를 적어주면 해당 디렉토리 위치에 있는 클래스의 이름만 작성하면 result type으로 쓸 수 있다.

이 프로젝트의 경우 application.properties에 이렇게 명시되어 있다. 

mybatis.type-aliases-package=com.project.smallbeginjava11.DTO

캡처 1

com.project.smallbegin11.DTO 폴더에 있다면 com.project.smallbegin11.DTO.Todo라고 적지 않고 Todo라고만 입력해도 result type으로 사용할 수 있게 된다.

캡처 2

 

3. 해결 방안

그런데 Could not resolve type alias라는 것은  type-aliases-package 설정을 통해 result type을 불러올 수 없다는 뜻이다. 간단한 해결방법은

캡처 3

result type을 이렇게 일일이 적어주는 것이다.

이렇게 명시해주니 Unsatisfied Dependency Exception이 더 이상 나타나지 않았다. 물론 일시적인 해결이다. org.mybatis.spring.boot:mybatis-spring-boot-starter dependecy를 설정하면 application.properties에서 mybatis가 접두사로 붙어있는 모든 설정은  MybatisAutoConfiguration.class를 통해 자동설정 될 줄 알았는데 그게 내 예상대로 이루어지지 않고 있다는 의미이므로 좀 더 살펴봐야 한다.


+ 2022.09.17 추가

https://catch-115.tistory.com/entry/Spring-boot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-AWS-%EB%B0%B0%ED%8F%AC-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0%EA%B8%B0%EB%A1%9D8

 

Spring boot 프로젝트 AWS 배포 오류 해결기록(8)

1. 문제점: Permission Denied 이번 프로젝트를 배포할 때 가장 시간을 오래 끌었던 문제가 이 Permission Denied 에러였다. 무엇 때문에 어디에 접근하는 권한이 거절되었는지 확인하기 위해 vim nohup.out 명

catch-115.tistory.com

왜 application.properties에서 mybatis 접두사를 붙이고  type-aliases-package를 설정해줬는데도 resultType 클래스를 불러오지 못 했는지 원인을 찾았다. mybatis 설정 파일인 mybatis-config.xml에 type-aliases-package를 설정했어야 하는데 application.properties에서 했기 때문이었다.


# 참고:

https://yangbox.tistory.com/30

 

Springboot의 자동설정(starter 라이브러리)

스프링부트에서 의존성을 추가하고 싶을 때 주로 스프링부트에서 제공하는 starter 라이브러리를 의존성 설정파일에 추가한다. 예를들어 Mybatis 라이브러리를 추가하고자 하면 제공되는 starter 라

yangbox.tistory.com

 

댓글