본문 바로가기

spring boot19

[Spring Boot] 롬복(Lombok)과 Mybatis 사용시 IndexOutOfBoundsException 발생 그리고 해결 방법 스프링 부트(Spring Boot)를 사용해서 백엔드 API를 개발할 때, 롬복(Lombok)을 많이 사용한다. 편하기도 하고 반복된 메서드를 만들 필요도 없기 때문에 잘만 사용하면 매우 훌륭한 라이브러리라 생각된다. 최근 Mybatis를 함께 사용하여 프로젝트를 진행 중에 갑자기 발생된 문제를 해결한 방법에 대해서 공유하려 한다. 롬복(Lombok)의 사용 시 @Builder의 사용 롬복에는 여러 가지 애노테이션이 있습니다. 주로 @Getter, @Setter, @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor, @Data, @ToString을 사용한다. 거의 대부분의 모든 것을 사용하는 것 같다. 저의 경우는 @Builder는 잘 사.. 2023. 8. 9.
[Spring Boot] Swagger 3.0 적용하기 Swagger의 3.0 버전을 새로운 토이 프로젝트에 적용해 보려 한다. 기존에는 적용해보지 않았지만 API 문서작업이 필요함을 느끼고 작업을 진행해 보려 한다. 문서작업이 항상 먼저지만 그와는 별개로 Swagger는 클라이언트에서 작업하기에 편한 문서가 안닐까 생각된다. 물론 서버에서 API를 실행해 보기 좋은 방법이기도 하다. Swagger 3.0 종속성 설치 첫 시작부터 쉽지 않았던것 같다. 종속성을 설치해도 페이지가 접속되지 않았기 때문이다. 그렇게 한참을 뒤져보다가 하나의 해답을 찾아냈다. https://stackoverflow.com/questions/74614369/how-to-run-swagger-3-on-spring-boot-3 How to run Swagger 3 on Spring Bo.. 2023. 7. 25.
[Spring Boot] 앱 배포시 profile 설정 방법 스프링 부트를 통해서 웹 프로그래밍을 완료하고 Build를 하면 로컬에서는 쉽게 테스트가 가능하다. 그리고 배포할 때에는 이 프로젝트를 jar 파일로 만들어서 배포하면 Tomcat까지 포함되어 만들어지기 때문에 배포 과정도 굉장히 편리하다. 이것이 스프링 부트를 사용하여 웹 서비스를 만들면 쉬운 부분 중 하나인 것 같다. 하지만 로컬에서 테스트할 때와 실제 운영에 배포하여 서비스할 때에는 환경 구성이 다르다. 그래서 profile 설정을 다르게 만들어 주어야 한다. 어떻게 하는 것인지 알아보자. application.yml 설정 대부분의 중요한 설정들은 application.properties 혹은 application.yml을 이용해서 만든다. 이 파일 내부에는 디비에 접근하는 url이나 jwt에 사용.. 2023. 1. 30.
[Spring Boot] Java Optional 사용 방법 Java를 이용하여 웹 프로그래밍을 할 때, 많은 부분은 CRUD를 사용하게 될 것입니다. 그리고 Read 부분이 가장 많이 이용되는 부분이 아닌가 싶습니다. 특히 Repository를 접근할때 JPA 기능을 사용하여 인터페이스를 상속받고 사용하는 메서드중에서 Optional 타입들이 있습니다. 이번 포스팅에서는 Optional 타입을 어떻게 사용하는지 알아보도록 할게요. Optional 은 무엇인가? Spring boot에서 엔티티를 조회하기 위해서 사용하는 메서드중 findById()라는 메서드가 있습니다. 이 메서드는 Id를 조회하여 엔티티 하나를 가져오는 메서드입니다. 이때 반환 타입을 보면 Optional로 되어 있습니다. 그리고 그 내부에 저희가 원하는 T 반환타입이 제너릭으로 만들어져 있어요.. 2022. 12. 28.
[Spring Boot] PostgreSQL 접속하기 위한 설정 방법 스프링 부트를 이용하여 여러 가지 웹 애플리케이션을 만들거나 공부를 하실 텐데요. 웹 애플리케이션을 만들기 위해서는 반드시 따라오는 부분이 바로 데이터베이스(DB)입니다. 데이터베이스에는 대표적으로 Oracle, Mysql, MariaDB, MS-SQL과 추가적으로 PostgreSQL이 있습니다. 이번 포스팅에서는 PostgreSQL을 접속하기 위한 스프링 부트 설정을 알아볼게요. 스프링 부트 PostgreSQL 설정방법 우선 스프링 부트에서 설정하기 위해서는 아래와 같은 몇 가지 설정을 해야 합니다. pom.xml / build.gradle 라이브러리 추가 application.properties / application.yml 우선은 데이터베이스를 연결해야 하기 때문에 접속할 수 있는 라이브러리를 추.. 2022. 4. 19.
[Spring Boot] 스프링 부트 profile 설정(스프링 부트 2.4.0 이후) 스프링 부트를 사용하면서 개발하다 보면 개발서버 혹은 로컬 서버에서의 설정들과 운영서버에서의 설정들이 다를 경우가 대부분인 것 같습니다. DB 설정부터 시작해서 여러 가지 설정들이 다르기 때문에 이 부분들을 매번 변경하기는 쉽지 않습니다. 이번 포스팅에서는 profile을 이용해서 각자 다른 설정들을 손쉽게 적용하는 방법에 대해서 알아보겠습니다. 스프링 부트 2.4.0 이후 profile 설정 yml 스프링 부트 2.4.0 이후 버전부터는 이 설정을 하는 방법이 변경되었습니다. 기존 방법은 deprecated 되었기 때문에 새로운 프로젝트를 이용해서 스프링 부트 2.4.0 이후 버전을 사용하시는 분들은 아래와 같이 사용이 가능합니다. spring: profiles: active: dev —- # dev .. 2022. 4. 18.
[Spring Boot] Exception 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가) 웹 애플리케이션을 리뉴얼 하거나 기존 내용을 이용해서 새로운 기능을 넣을경우, 혹은 라이브러리가 달라질경우 다양한 경우들에서 Exception들을 마주하게 됩니다. 이번 포스팅에서는 지원되지 않는 문자 집합에 관련된 Exception이 발생했을때 해결방안에 대한 내용입니다. 지원되지 않는 문자 집합 이 Exception의 경우는 DB에 세팅된 문자 인코딩 방식이 JDBC에서 지원하지않는 인코딩 방식이기 때문에 발생되는 에어입니다. HTML에서도 그렇고 Java에서도 그렇고 DB까지 한글에 관련된 인코딩 문제로 과거 많은 고생들을 했던것 같습니다. 제가 사용하던 애플리케이션에서는 기존에 ojdbc8.jar를 사용했습니다. 그리고 DB는 KO16MSWIN949이며 이는 JDBC에서 지원하지 않는 인코딩입니다.. 2022. 3. 22.
[Java] LocalDateTime 값을 String 포멧으로 변환하는 방법 Spring Boot를 사용하여 웹 애플리케이션을 만들다 보면 마주하는 데이터 타입이 LocaDateTime입니다. 로그나 액션을 취한 시간을 DB에 기록해야 할 필요성이 있기 때문이죠. 그대로 저장하고 그대로 사용하면 좋겠지만 또 변환을 해야 할 필요성이 있는 경우도 많습니다. 이번 포스팅에서는 LocalDateTime 값을 String 포멧으로 변환하는 방법을 알아볼게요. LocalDateTime 클래스 Java8 에서 등장한 클래스가 LocaDateTime입니다. 이 클래스는 타임존의 개념이 필요 없는 날짜와 시간에 대한 정보를 저장하고 나타내기 위해서 사용하는 클래스입니다. 그래서 Dto를 이용해서 브라우저에서 서버로 시간을 넘겨주거나 Database에 저장하기 위해 Entity를 만들 때 주로 .. 2022. 3. 16.
[Spring Boot] Mybatis 사용시 "[xX][mM][lL]"과 일치하는 처리 명령 대상은 허용되지 않습니다 해결방법 실무에서는 JPA와 더불어 Mybatis 역시 많이 사용하고 있는 방법 중 하나입니다. 현재 잘 운영되고 있는 시스템이라면 굳이 최신으로 꼭 변경해야 할 의무는 없으니까요. 이번 포스팅에서는 Mybais 사용중 발생하는 에러중 하나에 대해서 해결 방법을 알아보려 합니다. Spring Boot와 Mybatis를 연결해서 DB를 접근해서 사용하시는 분들도 많으실것 같아요. XML 관련 에러 열심히 Mybatis가 연동된 SQL 문장을 고치던 도중 아래와같은 에러가 갑자기 발생하기 시작했습니다. "[xX][mM][lL]"과 일치하는 처리 명령 대상은 허용되지 않습니다. 아무런 에러없이 잘 되던 어플리케이션이 위와같은 에러가 발생하면서 톰캣도 올라오지 않는 상태가 되어버렸습니다. 이유를 찾아보니 XML관련 에러.. 2022. 3. 11.