spring 8

[Spring] 소나큐브(SonarQube) CI 파이프라인 구축 (with Gitea)

OverviewSpring Boot (3 버전)에서 소나큐브(SonarQube) CI 파이프라인 구축 (with Gitea) Prerequisite* Spring Boot 3.2.7* Java 17* Gradle 8.1* Sonarqube 5.0.0.4638* Jacoco 0.8.11* Gitea 설치 - [Git] Docker를 통한 Gitea 구축하기(GitLab과 차이)* 소나큐브(SonarQube) 설치 및 Spring Boot 3 설정 - [Spring Boot 3] 소나큐브(SonarQube), JaCoCo 연동하여 정적 분석* 설치 확인Demo 애플리케이션(Spring Boot 3)에는 Sonarqube, JaCoCo가 연동되어 있어야하고, Gitea에 코드가 Push된 상태여야 합니다. 이..

Git 2024.07.05

[Spring Boot 2] 소나큐브(SonarQube), JaCoCo 연동하여 정적 분석

OverviewSpring Boot (2 버전)에서 소나큐브(SonarQube), JaCoCo 연동하여 정적 분석[Spring Boot 3] 소나큐브(SonarQube), JaCoCo 연동하여 정적 분석[Spring] JaCoCo를 통한 Code Coverage 측정 Prerequisite* Spring Boot 2.7.16* Java 11* Gradle 7.1.1* Sonarqube 3.5.0.2730* Jacoco 0.8.11* Docker 테스트 애플리케이션// 테스트할 간단한 Spring Boot 2버전 코드$ git clone https://github.com/hyunkwanko/spring-boot-2.x-demo.git 소나큐브(SonarQube) 설치$ sudo su -$ mkdir son..

Spring 2024.07.05

[Spring Boot 3] 소나큐브(SonarQube), JaCoCo 연동하여 정적 분석

OverviewSpring Boot (3 버전)에서 소나큐브(SonarQube), JaCoCo 연동하여 정적 분석[Spring Boot 2] 소나큐브(SonarQube), JaCoCo 연동하여 정적 분석[Spring] JaCoCo를 통한 Code Coverage 측정 Prerequisite* Spring Boot 3.2.7* Java 17* Gradle 8.1* Sonarqube 5.0.0.4638* Jacoco 0.8.11* Docker 테스트 애플리케이션// 테스트할 간단한 Spring Boot 3버전 코드$ git clone https://github.com/hyunkwanko/spring-boot-3.x-demo.git 소나큐브(SonarQube) 설치$ sudo su -$ mkdir sonarq..

Spring 2024.07.05

[Spring] JaCoCo를 통한 Code Coverage 측정

OverviewSpring Boot에서 JaCoCo를 통한 Code Coverage 측정 Prerequisite* Spring Boot 3.2.7 (Spring Boot 2 버전도 동일하게 적용 가능합니다.)* Java 17* Gradle 8.1* Jacoco 0.8.11 JaCoCo 개념JaCoCo(Java Code Coverage)는 Java 언어로 작성된 프로그램의 코드 커버리지를 측정하는 도구입니다. 코드 커버리지는 소프트웨어 테스트의 품질을 측정하는 데 사용되며, 특히 자동화된 테스트 스위트에서 테스트가 코드베이스의 얼마나 많은 부분을 실행했는지를 보여줍니다.JaCoCo는 다음과 같은 주요 기능을 제공합니다.1. 라인 커버리지(Line Coverage): 소스 코드의 각 라인이 실행된 횟수를 기..

Spring 2024.07.03

[Spring] JUnit5 테스트 코드 작성

테스트 코드를 작성해야 하는 이유 코드 테스트는 소프트웨어 개발 과정에서 매우 중요한 부분입니다. 아래는 코드 테스트를 실시해야하는 이유 몇 가지입니다. 1. 버그 발견: 코드 테스트를 통해 프로그램 내의 버그와 오류를 식별할 수 있습니다. 이렇게 발견된 버그를 수정하면 소프트웨어의 안정성과 신뢰성을 높일 수 있습니다. 2. 기능 검증: 코드 테스트는 소프트웨어의 기능을 확인하는 데 사용됩니다. 시스템이 기대대로 작동하는지 확인하고, 모든 기능이 올바르게 구현되었는지 확인할 수 있습니다. 3. 코드 변경 관리: 코드를 수정하거나 업데이트할 때, 테스트를 통해 변경된 코드가 이전 버전과 호환되는지 확인할 수 있습니다. 이를 통해 새로운 기능 추가나 버그 수정을 안정적으로 수행할 수 있습니다. 4. 코드 문..

Spring 2023.10.06

[Java] 가비지 컬렉션(Garbage Collection)의 개념

가비지 컬렉션(Garbage Collection) 개념 가비지 컬렉션(Garbage Collection)은 프로그래밍 언어에서 메모리 관리를 위한 중요한 개념 중 하나입니다. 프로그램이 동적으로 메모리를 할당하고 사용할 때, 할당된 메모리 중에서 더 이상 사용되지 않는 부분을 찾아내고 해제하는 작업을 의미합니다. 이를 통해 메모리 누수(memory leaks)와 같은 문제를 방지하고, 프로그램의 안정성과 성능을 향상시킬 수 있습니다. 가비지 컬렉션은 주로 자바(Java), C#, Python, JavaScript와 같은 고급 프로그래밍 언어에서 사용되며, 다양한 방법으로 구현될 수 있습니다. 가장 일반적으로 사용되는 가비지 컬렉션 알고리즘에는 다음과 같은 것들이 있습니다. 1. 참조 카운팅(Referen..

Java 2023.08.21

[Spring] HATEOAS 개념 및 장단점

Spring HATEOAS 개념 Spring HATEOAS는 Spring Framework를 기반으로 한 Hypermedia as the Engine of Application State (HATEOAS)의 구현체입니다. HATEOAS는 RESTful 웹 서비스에서 리소스 간의 관계와 상태를 표현하고 클라이언트가 리소스 간의 상호 작용을 위한 정보를 동적으로 얻을 수 있도록 돕는 개념입니다. HATEOAS의 핵심 개념은 "하이퍼미디어 링크"입니다. 이는 리소스와 관련된 다른 리소스로의 링크를 포함하는 것을 의미합니다. 클라이언트는 이러한 링크를 따라가며 API에서 제공되는 다른 리소스와 상호 작용할 수 있습니다. Spring HATEOAS는 이러한 하이퍼미디어 링크를 생성하고 관리하기 위한 도구와 클래스..

Spring 2023.08.14

[Spring/Java] 정규식을 통한 비속어 필터링

비속어 필터링 비속어들은 DB에 저장되어 관리되거나, 비속어 필터 라이브러리가 있으니 확인해보길 바란다. DB로 관리하는 것과 라이브러리를 활용하는 것에는 각각 장단점이 있으니 방식은 비교해보고 결정해보길 바란다. 게시물 등록 시에 모든 비속어를 DB에서 매번 조회하고 비교하는 것은 비효율적이다. Cache, Session, Singleton, In-memory 저장소(Redis 등)와 같은 방식으로 값을 미리 조회해서 사용하는 방식이 효율적이다. 이 글에서는 비속어들이 DB에 저장되어 관리되고, Redis를 사용하는 환경에서 비속어 필터링한다. 비속어 DB로부터 Redis에 비속어 정규식 패턴 저장 public void saveSlangListToRedis() { // DB로부터 모든 비속어 조회 (약..

Spring 2023.05.06