스프링과의 차이 회고하기
그동안 회사에 있는 기본적인 베이스 프로젝트를 토대로 일하다 보니
스프링 부트를 이용해서 자잘한 프로젝트는 해봤으나
처음부터 게시판을 만들어본지가 좀 된 것 같다. 너무 게을렀던 나에 대한 반성을 해본다.
스프링으로는 만들어본 적이 있었기 때문에 당연히 쉽다고 생각했는데
몇 가지 차이가 있었고, 스프링에서는 안 났던 오류가 스프링부트에서는 나더라
스프링 게시판 만들기용으로 만들다가 여러 오류가 많이 나서 힘들었다. (정말 애를 많이 먹었다)
물론 게시판만들기에 당연히 여러 방식이 있겠지만
내가 했던 방식으로는 안 됐다는 걸 글로 쓰고 싶었다.
물론 초보자의 입장이라 아직도스프링과 스프링부트의 설정 차이를 명확하게 아는 것은 아니다.
그래서 스스로 정리해보기 위해 여기에 올려둔다.
계속 업데이트를 올릴 예정이다.
*
내장 톰캣이 있는 Application 설정,
그 밖에 mybatis-config, mapper 설정은 둘다 동일
기존 스프링에서 사용하는 MVC패턴을 적용(실패)
컨트롤러 - @Controller, @Autowired로 서비스 주입
dao - @Repository, @Autowired로 Sqlsession 주입
(네임스페이스로 mapper와 매칭)
model - 우리가 아는대로 VO
service - @Service 주입, @Autowired로 dao 주입
정확하게 말하면 실패까지는 아니고,
초반부터 계속 거슬리는 오류가 하나 있었다.
뷰가 뜨긴 뜨는데 언제 이것 때문에 더 희한한 오류가 날지도 모르는거라
오류를 잡기위해 애썼다.
2019-11-15 13:03:33.580 WARN 8308 --- [ main] o.m.s mapper.ClassPathMapperScanner :
No MyBatis mapper was found in '패키지 이름' package. Please check your configuration.
이름 그대로 매퍼스캔을 제대로 못한다는 건데,
매퍼스캔에 패키지 이름을 적어줄 뿐인데 왜 안될까 대환장 잔치.
검색해서 나오는 건 다 해보았지만 실패.
어디에서 꼬인건지 해답을 못 찾은 채 요구사양을 충족하지 못해서라는 글을 발견하고
문서를 보았으나 나의 스프링부트 버전은 2.1이상이고, java(JDK)도 8이상이었다.
(깨알 지식 - 내 자바 버전을 알기 위해서는 윈도우+R < cmd < java -version)
(MYBATIS를 구축할 수 있는 스프링부트의 최소사양)
결국 처음부터 다시 구축
각종 강의, 주워온 것들로 만든 스프링부트 게시판(성공)
컨트롤러 - @Controller, @Autowired로 서비스 주입(동일)
dao - @Repository, @Autowired로 Sqlsession 주입
(네임스페이스로 mapper와 매칭)
mapper 인터페이스 - @repository 생성
model(=vo) - 우리가 아는대로 VO(동일)
service - @Service 주입, @Autowired로 dao 주입(동일)
우선 mapper 패키지에 TestMapper 인터페이스를 만들고
아무것도 안 넣었는데도 매퍼스캔 오류가 사라진 것을 발견했다.
주워들은 짧은 지식으로는 @MapperScan에서 src/main/resources의 mapper폴더를
그냥 "." 이렇게 인식하고 "/" 이런식으로 인식하지 못한다는 것을 봄
그것때문인지는 모르고(우리는 그동안 숱하게 리소스 밑에 mapper폴더를 만들어왔잖아..)
여러 강의, 글을 보니까 mapper폴더를(repository=DAO) 따로 만들어주더라!
그래서 따라해봤는데 되었다.
어렵다 어려워.. 초보자는 오늘도 두통과 함께 코딩중...
저 패키지를 토대로 스프링 게시판 생성하기부터
로그, JPA, 시큐리티등을 천천히 적용하여 올릴 계획이다.
전체적인 완성작은 해당 소스를 참고
github.com/yulfsong/spring-boot-hello-project
'프로그래밍 > SpringBoot' 카테고리의 다른 글
[스프링 부트 게시판] 로그 설정하기 (0) | 2020.09.25 |
---|---|
[스프링 부트 게시판] Mysql, Mybatis 적용하기 (0) | 2019.12.01 |
[스프링 부트 게시판] Spring Boot Project 생성하기 / View 띄우기 (0) | 2019.12.01 |
[SpringBoot] thymeleaf 서버 재시작없이 수정반영 (0) | 2019.01.13 |
[SpringBoot] static폴더와 templates (0) | 2019.01.13 |