본문 바로가기

springboot9

Swagger 적용 API 기반의 서비스를 개발하면 API 명세서를 별도로 만들어야 하는 경우가 많이 있는데, 나중에 만들다 보면 많이 귀찬은 부분이 생겨 프로젝트 초반에 정의하고 진행한다면 프로젝트 매뉴얼 작성할 때 편한 라이브러리 입니다.개인적으로는 모든 프로젝트에 강제로 적용하고 있으며, 보안 문제가 있는 사이트에서만 서비스 페이지를 삭제하는 형태로 많이 진행합니다. 개발 코드는 다음과 같습니다. 1. 먼저 Dependency 를 추가해 주시면 됩니다.implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.8.9' 현재 3.x 버전도 나오기는 하였는데 아직 미완성으로 보이고 가장 많이 사용하는 버전이 2.. 2025. 9. 12.
Git-Gradle 설치 및 배포 환경 구축 부분만을 보여 드렸지만 개인적으로 간단한 프로젝트를 하였습니다.이제 빌드를 통해 서비스를 올리려고 해서 git 설치 및 Gradle를 이용한 배포 파일 만드는 것을 설명 하려고 합니다. 1. Git 설치[root@blue ~]# dnf list git* ... git.x86_64 2.47.3-1.el10 appstream git-all.noarch 2.47.3-1.el10 appstream git-annex.x86_64 10.20250320-1.el10_0 epel ...[root@blue ~]# dnf install -y git[root@blue ~]# git -v git version 2.47.3 2. Gradle를 이용한 배포 환경 구축지금 개발은 gradle 기반으로 프로젝트를 구성하여 gradl.. 2025. 9. 9.
Slack을 이용하여 메세지 전송 슬랙을 통하여 메세지를 전송하기 위해서는 슬랙에 앱(봇)을 등록해야 되서 바로 전 글에서 슬랙 앱 등록 관래서 글을 올렸습니다.오늘은 등록된 앱을 호출(API 전송)하는 것을 설명하려고 합니다. API 규격서를 확인해 보니 Bearer를 이용한 인증(OAuth 2.0)을 사용하였고 데이터 전송은 Post 방식을 사용하였습니다.먼저 이전 글에서는 GET 방식의 유틸만 공객 하였는데 조금 보강하여 POST 방식의 모듈을 추가 하였습니다. public ResponseEntity postEntity(String url, MultiValueMap headers, Object body, Class responseDtoClass) { return restCli.. 2025. 9. 8.
Database 연결 설정 배치 프로그램에서 사용할 DB 연결 코드 입니다.수집된 데이터를 DB에 삽입하기 위해서 사용되며, MyBatis를 사용했습니다. 수집이라 JPA가 편할 수 있으나 최종적으로 사용하는 용도가 데이터의 연관 관계가 클 수 있어 Mybatis로 결정을 했습니다. 아래 코드는 개인 프로젝트 특성상 제가 현재 편한 스타일로 구성하였습니다. 실제 프로젝트에서는 조금 다르게 사용합니다. 예를 들면 MapperScan을 잘 사용하지 않습니다. 이렇게 하다보면 수정에 대한 요구가 많아 다른 방식으로 처리를 하게 됩니다.@MapperScan( basePackages = "com.demo.data.batch.**.dao" , sqlSessionTempl.. 2025. 9. 3.
RestClient 이용한 API 호출 시 Encoding 이슈 처리 외부 사이트를 접속하다보면 QueryString(?) 형태의 파라미터를 보내야 할 경우가 있습니다.그런데 암호화, 등 여러가지 이슈로 이미 encoding 된 값을 가지고 있다면 RestClient 기본값으로 encoding이 자동으로 진행되어 2번의 encoding이 되게 되고 정상적이 호출이 일어나지 않는 이슈가 발생하게 됩니다. 또한 원본 데이터를 가지고 보내면 데이터 값에 대한 표준 규격의 데이터 규칙 이슈가 발생 될 수 있는 경우가 있습니다. 이 때 정답은 아니겠지만 RestClient에서 Encoding을 끄는 것도 방법이어서 여기에 간략하게 정리하고 갑니다. 기존에 작성한 코드에서 2줄 추가 되었습니다. 자세한 코드는 기존 코드를 참고 하시기 바랍니다. @Bean .. 2025. 9. 1.
Spring boot Batch 프로그램 개발 2 - Job 실행 앞서 이야기 하였지만 Batch 프로그램만 작성하면 자동으로 프로그램이 실행이 됩니다.간단하게 실행하다면 Config만을 작성한 후에 실행을 하면 되지만 보통 스케줄러나 다른 이벤트를 통해 실행하기를 원하는 경우가 많이 있습니다. 일반적으로 스케줄러를 통해 진행하는데, 이 스케줄러를 스프링의 스케줄러를 잘 사용하지 않고 별도의 프로그램을 통해 진행하는 경우가 많이 있습니다.또한 진행에 대한 관리를 해야 되는 이슈가 있어 배치의 상태를 관리하고자 하는 경우가 많이 있어 h2와 같은 휘발성 메모리에 넣지 않고 DB에 저장을 하는 형태로 작성을 하는 것입니다. 저는 웹상에서 배치를 실행하고 실행된 배치를 관리 하는 형태로 생각 하고 있어 웹서비스 형태로 프로그램을 작성을 하려고 합니다. 웹에서 잡을 실행하기 .. 2025. 8. 27.
Spring boot Batch 프로그램 개발 1 개인적으로 프로그램 할일이 있어 간단한 스프링 배치 프로그램 개발하는 방법을 소개 하려고 합니다.개념에 관한 부분은 나중에 설명 하겠습니다. 급하게 찾아야 하는 분들은 인터넷에 잘 나와 있습니다. 검색하시면 됩니다. 1. 신규 프로젝트 생성후 "Spring Batch"를 선택해 주면 됩니다. 2. 세팅 후에 DB 설정을 먼저 하셔야 합니다. 아시는 분은 아시겠지만 DB 스키마는 라이브러리("spring-batch-core-...jar")에 있습니다. 여신 후 DB에 생성해 주시면 됩니다. 3. 저는 간략 버전을 만들거라서 "h2" DB를 사용하려고 합니다.build.gradle에 아래 디펜던시를 추가 하시면 됩니다.dependencies {... runtimeOnly 'com.h2database:.. 2025. 8. 26.
프로젝트 생성 및 Hello World 출력하기 Spring Initialize( https://start.spring.io/ )사이트에서 프로젝트를 생성하여 진행하는 것으로 앞에서 기술하였는데, 일반적으로는 개발 툴에서 진행을 합니다. 다만 IntelliJ 무료 버전에서는 지원을 하지 않아 사이트에서 생성을 하여 진행해야 합니다. 오늘은 개발툴에서 생성하고 "Hello World"까지 출력하는 것까지 하려고 합니다. 1. "File > New > Spring Starter Project"를 클릭합니다. 2. 앞에서 설명 했던 내역을기반으로 생성하시면 됩니다. AA는 생성시 Package 를 어떻게 할지 고민으로 생각보다 오래 걸리는 부분입니다. 일반적으로는 "{조직구분}.{조직명}.{프로젝트명}.{모듈명].."으로 많이 합니다. 다만 조금 큰 프로젝.. 2025. 8. 19.
Spring Boot 프로젝트 시작하기 개발 관련 내용을 메인으로 하려고 하였는데 실제 작성을 하다보니 인프라 내용이 많아졌고, 개인적으로 모으는 정보가 더 많은 상황이 되어가고 있네요. 어째든 다시 개발로 돌아와서 개발 시작은 프로젝트 생성하는 것인데 Spring Boot는 개발 환경에 대한 정의(샘플)을 제공하고 있습니다. IntelliJ Community 버전을 쓰시는 분은 Spring Initialize( https://start.spring.io/ )사이트에 접속하면 프로젝트 생성을 통하여 사이트에 적용해 주어야 하며 IntelliJ 상용 버전이나 STS(Eclipse)를 쓰시는 분은 툴에서 직접 생성하시면 됩니다. 사이트에 접속해 보시면 아시겠지만 영어 이기는 하지만 제목에 따라 정의 하시면 특별히 문제는 없습니다. 위의 입력되는 .. 2025. 7. 18.