본문 바로가기

컴퓨터/Spring Boot

(25)
STS(Spring Boot)- UsernameNotFoundException이 BadCredentialsException으로 나오는 문제 원인 파악 spring security를 사용하여 로그인 로직을 개발하던 중 마주한 문제였다. 문제 상황은 다음과 같다. 데이터베이스에 없는 유저가 로그인을 시도 했을 때 UsernameNotFoundException이 아닌 BadCredentialsException으로 예외처리가 됐다. 그래서 왜 그런지 코드를 살펴보았다. [userDetailService] @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User user = userMapper.getAuthInfo(username); if (user == null) { throw new UsernameNotFoundException..
STS(Spring Boot) - The type javax.servlet.Filter cannot be resolved. It is indirectly referenced from required type org.sitemesh.config.ConfigurableSiteMeshFilter 해결 사이트매쉬를 설정하면서 마주한 에러였다. The type javax.servlet.Filter cannot be resolved. It is indirectly referenced from required type org.sitemesh.config.ConfigurableSiteMeshFilter 웹 애플리케이션에서 servlet 필터가 클래스 패스에 존재하지 않거나 가져오지 못해 발생한 에러로 Maven 웹 프로젝트 서블릿 3.1로 업그레이드 하기 (tistory.com)을 참고하여 서블릿을 업그레이드 한 후 의존성을 추가해주었더니 해결되었다.! ** 의존성 추가 후 꼭 install 후 재실행을 하자
STS (Spring Boot) - 폴더 안의 jsp 파일 디자인 적용 안됨 해결 사이트 매쉬를 설정하고 폴더를 나눈 뒤 사용할 페이지를 정리하였는데 폴더를 사용하지 않은 views 하위의 index나 errorPage는 디자인 설정이 반영되지만 폴더를 사용하였을 때에는 전혀 반영되지 않았다. 사이트매쉬 필터 문제도 아니었다. 한참을 삽질하다가 이유를 알아냈다. url에서 절대경로가 아닌 상대 경로를 썼기 때문이다. 나는 부트스트랩의 모든 디자인 파일들을 frontLayer라는 폴더 안에 넣어놨고 그래서 사용할 페이지들의 경로를 frontLayer/.. 처럼 수정해주는 작업을 했었다. 그런데 앞에 /를 붙이지 않아 상대경로로 접근하여 즉, 현재 페이지나 파일을 기준으로 해당경로로 이동하였기 때문에 디자인 파일 적용이 되지 않았던 것이다. 절대 경로를 사용해야 웹어플리케이션의 루트 디렉..
STS (Spring Boot) 게시판 CRUD_3. Bootstrap 적용과 SiteMesh 설정 - 수정 예전에 진행하려다 여러가지 사정으로(?) 미루고 미뤘던 프로젝트를 다시 시작하려고 하는데 부트스트랩 테마가 영 마음에 들지 않았다. 그래서 새로운 부트스트랩을 다운받았고 이를 적용하였다. Free Bootstrap Themes, Templates, Snippets, and Guides - Start Bootstrap Start Bootstrap startbootstrap.com 지난번과 같은 사이트에서 다운받았다. webapp밑에 frontLayer라는 폴더를 하나 생성한 뒤 다운 받은 부트스트랩 파일들을 그대로 넣어주었다. html은 안넣어도 되지만 필요한 페이지들을 바로바로 보면서 하려고 그냥 넣어놨다. 후에 제거할 예정이다. 그리고 sitemesh를 사용하기 위해 몇가지 설정을 하였다. 1. sit..
connection refused: no further information java 해결 스프링부트를 실행하는데 계속 위와 같은 에러가 뜨면서 실행이 되지 않았다. 찾아보니 데이터베이스 연결이 잘 안되고 있다면 뜨는 에러라는데 포스트맨으로 회원가입을 했을 때는 잘 되는데 로그인이 안되고 있었다. 몇번을 실행하다가 새롭게 찾은 에러문구 org.springframework.data.redis.RedisConnectionFailureException redis 커넥션 실패..? 생각도 못한 redis 문제였다. 프로젝트를 다시 클론받고 데이터베이스 다시 연결해보고 이것저것 다해봤는데 어쩐지 같은 프로젝트 팀원도 나랑 똑같은 에러를 겪고 있더라 결국 Redis를 설치한 후 실행시키고 나서 다시 프로젝트를 돌렸더니 정상적으로 실행되었다. 아직도 궁금한 점은 회원가입은 어떻게 된 걸까? 연결이 안되었다..
스프링 부트 바로 종료 <terminated> 해결 이전에 진행하던 프로젝트를 새로운 부트스트랩을 입혀 전반적으로 수정하기 위해 실행하였는데 실행이 계속 되지 않고 종료되었다. 어떤 에러코드도 없이 run하자마자 바로 terminated가 단호박으로 떴다. 구글링해도 잘 안나와서 하루종일 삽질하다가 이유를 알아냈다. 처음에는 톰캣문제인건가 혹시 버전 문제인건가 싶어서 톰켓을 다운그레이드도 시켜보고 jdk와 스프링부트와의 버전도 확인해봤다. 결국 프로젝트를 export 한 뒤 다시 import했더니 문제점을 알 수 있었다... 메인 어플리케이션이 다른 클래스 파일을 통해 실행이 되고 있었다. 어쩐지 뜬금없는 클래스 파일을 호출하길래..이게 무슨일인가 했다!! ㅠㅠㅠㅠ 너무 어이없는 에러라 황당했지만.. 다시 잘 돌아가서 다행이었다.
[lombok] 룸북이란? 이번에 새 프로젝트를 시작하면서 롬북을 쓰게 되었다. 새로운 기술 조합으로 프로젝트를 시작하려니 배울 게 너무나도 많다. 그런데 왜 진작 안썼을까? 하는 기술들이 대부분이다. JPA를 사용하다보니 롬북의 편리함을 더욱 느껴서 정리해보려고 한다. Lombok이란? 어노테이션을 통해 특정 메서드를 자동으로 생성해주는 라이브러리이다. 모델 객체마다 반복적으로 생성해주어야하는 getter나 setter 메소드를 매우 간편하게 생성할 수 있다. 코드를 자동으로 생성해주기 때문에 생산성을 향상시킬 수 있으며 코드 가독성을 높이고 유지 보수에 용이하다는 장점이 있다. Lombok 설정하기 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectl..
[TIL] Spring Boot(intellij) - 예제 만들기 (스프링 핵심 원리-기본편) * 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편 강의 정리 입문 강의를 듣고 정리하는 터라 프로젝트 생성부터 기본 세팅은 생략하고 정리하려 한다. 비즈니스 요구사항 설계 회원 도메인 설계 및 개발 회원 도메인 실행 및 테스트 주문과 할인 도메인 설계 및 개발 주문과 할인 도메인 실행 및 테스트 이렇게 다섯 단계의 프로세스로 진행한다. 우선 사전에 주의할 점은 예제 개발은 스프링의 도움 없이 순수 자바로만 개발하며 아직 데이터베이스를 사용하지 않기 때문에 데이터 메모리를 사용한다. 그리고 상품 등록의 경우 편의를 위해 임의로 등록하는 것으로 한다. 1. 비즈니스 요구사항 설계 회원 api : 회원 가입, 회원 조회 회원은 일반, vip 두 가지 타입 주문과 할인 api : 회원 상품 주문, 할인 정..

728x90