본문 바로가기
  • 개발하는 곰돌이

Development/Spring & Spring Boot26

[Spring/Spring Boot] Service와 ServiceImpl 구조에 대하여 목차 문제 인식 Spring 또는 Spring Boot 예제들을 보면 거의 모든 예제가 위와 같이 Service 인터페이스와 각 서비스 인터페이스에 대한 구현체 클래스로 구성되어 있다. 이러한 구조 자체는 다형성적인 측면에서 보면 절대 잘못된 것이 아니지만, 온라인 상의 거의 모든 예제들, 나아가 회사에서 진행하는 프로젝트에서도 이러한 구조를 무분별하게 사용하는 모습을 보면서 한가지 의문이 생겼다. 어차피 인터페이스와 구현체 클래스를 1:1로 구성할거면 인터페이스 없이 서비스 클래스를 바로 작성하면 되지 않나? 이러한 의문으로 인해 서비스 인터페이스 - 구현체 클래스의 구조가 탄생한 계기에 대해 찾아보게 되었다. Service 인터페이스와 ServiceImpl 구현체 클래스를 나누는 이유 기본적으로 Se.. 2023. 1. 26.
[Spring Boot] 스프링부트 3.0.0 이상 버전을 사용하려고 할 때 빌드 과정부터 에러가 나는 경우(Kotlin/Java 동일) 작성일 기준으로 Spring Initializr를 사용하여 스프링 부트 프로젝트를 생성할 때 3.0.0 이상인 버전과 2.7.X 버전 중에서 선택할 수 있다. 아직은 2.6.X나 2.7.X 버전을 사용하는 경우가 많으나, 언젠가는 3.0.0 이상인 버전을 사용하게 되는 경우가 더 많아질 수가 있다. 하지만 Java 버전을 국내에서 주로 사용하는 11이나 1.8로 설정하고 3.0.0 이상인 버전의 스프링 부트 프로젝트를 생성하면 최초 빌드 과정에서부터 에러가 발생하게 된다. 에러 로그의 핵심적인 부분만 추려내면 다음과 같다. Incompatible because this component declares an API of a component compatible with Java 17 and the con.. 2023. 1. 17.
[Spring Boot] Springdoc 라이브러리를 통한 Swagger 적용 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.7 Kotlin 1.7.21(JDK 11) Springdoc Openapi UI 1.6.11 Springdoc은 무엇인가? 이전에 Spring Boot 프로젝트에 Swagger UI를 적용하는 포스트를 작성한 적이 있다. 해당 포스트를 작성할 당시에는 Swagger UI를 제공하는 라이브러리가 Springfox만 존재하는 줄 알았는데, Springdoc이라는 라이브러리에서도 Swagger UI를 제공한다는 사실을 알게되어 이 포스트를 작성하게 되었다. 최근에는 Springdoc을 사용하는 것이 더 선호된다고 한다. Springfox의 경우에는 2020년 7월 이후로 업데이트가 중단된 반면, Springdoc은 최근까.. 2023. 1. 15.
[Spring Boot] application.properties와 application.yml의 차이점 목차 개요 Spring Boot 프로젝트에서는 일반적으로 프로젝트의 각종 설정을 application.properties 또는 application.yml 파일을 통해 하게된다. 기본적으로 Spring Initializr를 통해 Spring Boot 프로젝트를 생성하면 application.properties가 생성되지만, Spring Boot 설정을 위해 구글링을 하다 보면 application.yml에 대한 내용이 상당히 많이 나온다. 따라서, application.properties와 application.yml의 차이를 정리하려고 한다. properties와 yml의 차이점 properties와 yml의 대표적인 차이는 내부 구조가 있다. properties의 경우엔 각 줄마다 key=value의.. 2023. 1. 4.
[Spring Boot] Scheduler를 사용하여 정해진 시간마다 메소드 실행시키기 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.6 Kotlin 1.7.21(JDK 11) MySQL 8 Swagger 3.0.0 MyBaitis 2.3.0 Spring Boot 프로젝트에 Swagger 3.0.0을 적용하는 방법, MyBatis 설정 방법은 아래 포스트를 참고하면 된다. [Spring Boot] Kotlin 기반 Spring Boot 프로젝트에 Swagger 3.0.0 적용하기 [Oracle] Spring Boot 프로젝트에서 Mybatis 세팅하기 with Kotlin 개요 프로젝트를 진행하다보면 정해진 시간마다 특정 동작을 수행해야할 때가 있다. 이 때 Spring Boot에서 제공하는 Scheduler를 사용하면 손쉽게 정해진 시간에 특정 .. 2022. 12. 30.
[Spring Boot] Kotlin 기반 Spring Boot 프로젝트에서 파일 업로드하기 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.6 Kotlin 1.7.21(JDK 11) Oracle 11g Swagger 3.0.0 mybaitis 2.3.0 Spring Boot 프로젝트에 Swagger 3.0.0을 적용하는 방법은 아래 포스트를 참고하면 된다. [Spring Boot] Kotlin 기반 Spring Boot 프로젝트에 Swagger 3.0.0 적용하기 개요 예제로 블로그에 글을 작성할 때 제목과 내용, 카테고리 일련번호와 파일 하나를 업로드하여 작성하는 API를 구현한다. Swagger를 통해 테스트하기 때문에 별도의 화면은 구성하지 않는다. Domain 블로그의 글과 관련된 BoardDTO를 작성한다. data class BoardDTO(.. 2022. 12. 23.
[Oracle] Spring Boot 프로젝트에서 Mybatis 세팅하기 with Kotlin 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.6 Kotlin 1.7.21(JDK 11) Oracle 11g Swagger 3.0.0 mybaitis 2.3.0 Spring Boot 프로젝트에 Swagger 3.0.0을 적용하는 방법은 아래 포스트를 참고하면 된다. 2022.12.06 - [Spring Boot] - Kotlin 기반 Spring Boot 프로젝트에 Swagger 3.0.0 적용하기 Mybatis는 무엇인가? Mybatis는 Java에서 관계형 데이터베이스를 사용하는 개발을 더욱 수월하게 해주는 프레임워크로, 기존의 JDBC를 사용한 코드를 별도의 XML 파일로 분리하여 자바 코드상의 SQL을 모두 제거하고 관리를 편하게 해준다는 장점을 갖는다... 2022. 12. 20.
[Spring Boot] Kotlin 기반 Spring Boot 프로젝트에 Swagger 3.0.0 적용하기 본 포스트에서 사용하는 Springfox는 2020년 7월 이후로 릴리즈가 중단되었습니다. 현재도 지속적으로 릴리즈 중이면서 Swagger UI를 사용할 수 있는 또 다른 라이브러리인 Springdoc을 사용하는 방법은 이 링크를 참고해주세요. 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.6 Kotlin 1.7.21(JDK 11) Springfox Swagger UI 3.0.0 Swagger란? Swagger는 개발자가 REST API를 설계, 빌드, 테스트, 문서화를 쉽게 할 수 있도록 도와주는 오픈 소스 프레임워크이다. Swagger를 사용하면 따로 Postman을 사용하지 않거나 테스트 페이지를 만들지 않고도 직접 파라미터를 입력하면서 개발한 API를 간.. 2022. 12. 6.