개발일지/스프링42 스프링 부트에서 데이터 그룹화하기: groupBy() 활용법 자바 스프링 부트를 이용하여 데이터를 처리하는 과정에서도 자바스크립트와 마찬가지로 데이터를 특정 기준에 따라 그룹화하는 작업이 자주 필요합니다. 이번 포스팅에서는 자바 스프링 부트에서 데이터를 효과적으로 그룹화하는 방법을 소개하겠습니다. 특히 최신 자바 버전에서 제공하는 Stream API의 Collectors.groupingBy()를 활용하여 간단하고 가독성 높은 코드를 작성하는 방법에 대해 알아보겠습니다.기존 데이터 그룹화 방법우선 데이터를 그룹화하는 작업을 하기 위해 반복문과 조건문을 이용한 기존 방법은 코드가 길고 유지보수가 어렵다는 단점이 있었습니다. 예를 들어, 여러 사용자의 이름, 나이, 국가 정보를 가진 리스트가 있을 때, 국가별로 사용자를 분류하고 싶다고 가정해봅시다.import java.. 개발일지/스프링 2024. 11. 1. 스프링 부트에서 최초 실행 시 동작하는 로직 애플리케이션을 운영하다 보면 애플리케이션이 실행되는 시점에 단 한 번만 실행되어야 하는 로직을 정의할 필요가 있는 경우가 많습니다. 예를 들어, 초기 설정값을 미리 로딩하는 Warm up 과정이나 환경 설정을 기반으로 하는 로직이 이에 해당합니다. 그렇다면 이처럼 최초 1회 실행되어야 하는 로직은 어디에 정의해야 할까요?그 방법을 네 가지로 나누어 상세히 소개합니다.1. Bean 생명주기를 이용하는 방법스프링 부트에서 빈(Bean)의 생명주기를 활용하여 최초 실행 로직을 정의할 수 있습니다. 가장 많이 사용되는 방법으로 생성자(Constructor)와 @PostConstruct 어노테이션을 사용하는 방법이 있습니다.1.1 생성자(Constructor) 이용@Slf4j@Componentpublic clas.. 개발일지/스프링 2024. 10. 31. Faker 라이브러리 사용하는 방법 1. Faker 라이브러리란?Faker는 무작위 더미 데이터를 생성하기 위한 라이브러리로, 테스트 환경이나 샘플 데이터를 생성하는 데 매우 유용합니다. 이름, 주소, 전화번호, 회사명 등 현실감 있는 다양한 데이터를 만들어주기 때문에 프로젝트에서 테스트 데이터를 쉽게 얻을 수 있습니다.2. 프로젝트에 Faker 라이브러리 추가하기Faker를 사용하려면 프로젝트에 이 라이브러리를 추가해야 합니다. Spring Boot 프로젝트는 일반적으로 Maven이나 Gradle 빌드 도구를 사용하므로, 각각의 방식으로 Faker 라이브러리를 추가하는 방법을 살펴보겠습니다.2.1 Maven을 사용하는 경우pom.xml 파일에 Faker 의존성을 추가하세요. com.github.javafaker javafake.. 개발일지/스프링 2024. 10. 31. Gradle 의존성 설정의 이해 - api와 implementation의 차이 Gradle에서 외부 라이브러리를 프로젝트에 추가할 때 compileOnly, runtimeOnly, implementation, api 등 다양한 키워드를 사용할 수 있습니다. 이 중에서도 api와 implementation은 가장 자주 사용되는 옵션으로, 각각의 기능과 동작 방식이 다르기 때문에 상황에 맞게 사용해야 프로젝트의 의존성을 효율적으로 관리할 수 있습니다. 이 글에서는 api와 implementation의 차이와 사용법을 자세히 알아보겠습니다.Gradle 의존성 설정 기본 예시// build.gradle 파일dependencies { api 'org.apache.httpcomponents:httpclient:4.5.7' implementation 'org.apache.common.. 개발일지/스프링 2024. 10. 29. 자바 스프링부트 웹 개발에서 중요한 디자인 패턴과 활용 스프링부트는 자바로 웹 애플리케이션을 개발할 때 널리 사용되는 프레임워크이며, 그 안에서 다양한 디자인 패턴이 활용됩니다. 이러한 디자인 패턴들은 코드의 재사용성, 유지 보수성, 그리고 가독성을 향상시켜주기 때문에 웹 애플리케이션 개발에 있어서 매우 중요합니다. 1. 싱글톤 패턴 (Singleton Pattern)싱글톤 패턴은 애플리케이션 내에서 클래스의 인스턴스를 하나만 생성하도록 보장하는 디자인 패턴입니다. 예를 들어, 데이터베이스 연결 객체를 여러 개 만드는 것은 비효율적이므로, 하나만 만들어서 재사용하고 싶을 때 싱글톤 패턴을 사용합니다.사용 사례: 데이터베이스 연결 풀, 설정 정보 등을 싱글톤으로 구현하여 전체 애플리케이션에서 하나의 인스턴스를 공유합니다.장점: 객체를 하나만 생성하므로 메모리 .. 개발일지/스프링 2024. 10. 29. MyBatis 사용법 [gradle 사용] 1. 의존성 때문에 build.gradle에 추가 plugins { id 'java' id 'war' id 'org.springframework.boot' version '3.2.4' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.koreait' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:.. 개발일지/스프링 2024. 3. 27. 서블릿 Ver.1 (FrontController) package com.spring.controller.common; import java.io.IOException; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; // FrontController // @ ▶ .xml : 서블릿 컨테이너(톰캣, 웹 서버) public class DispatcherServlet extends HttpServlet { private static final long serialVersionUID = 1L;.. 개발일지/스프링 2024. 3. 7. web.xml 서블릿 선언하기 dispatcherServlet com.spring.controller.common.DispatcherServlet dispatcherServlet *.do 개발일지/스프링 2024. 3. 6. 스프링 컨테니어 (application.xml) 설정 (트랜잭션, 템플릿패턴) ※ 주의 ※ 주석은 사용시 제거를 해주는게 좋다 주석이 존재시 가끔 에러를 일으킬수 있기 때문이다. 개발일지/스프링 2024. 3. 5. Spring application.xml 트랜잭션 적용 application.xml 스프링 AOP 트랜잭션 관리 예시 상세 설명 1. 트랜잭션 매니저 빈 설정: 빈 정의: txManager라는 이름의 스프링 빈을 정의합니다. 빈 클래스: DataSourceTransactionManager 클래스를 사용합니다. 이 클래스는 데이터베이스 트랜잭션 관리를 담당합니다. 데이터 소스 종속성 : dataSource 속성은 다른 빈 (dataSource)을 참조합니다. 이 dataSource 빈은 데이터베이스 연결 정보를 제공합니다. 2. 트랜잭션 어드바이스 설정: 어드바이스 정의 : txAdvice라는 AOP 어드바이스 빈을 정의합니다. 트랜잭션 매니저 : transaction-manager 속성은 txManager 빈을 참조하여 트랜잭션 관리 기능을 연결합니다. 트랜.. 개발일지/스프링 2024. 3. 4. Spring AOP (개념, 용어, 원리, 포인트컷 표현식, JoinPoint API) 1. AOP란? Aspect Oriented Programming 의 약자로 관점지향 프로그래밍이라고 부른다. IoC가 낮은 결합도와 관련된 것이라면 AOP 는 높은 응집도와 관련되어 있다. 서비스들의 비즈니스 메소드들은 복잡한 코드로 구성되어있는데, 그 중 핵심 로직은 얼마안되고 대부분은 트랜잭션, 로깅 처리, 인증과 관련된 코드들이 있을 수 있다. 이럴 때 비핵심이지만 꼭 필요하고, 공통화할 수 있는 부분을 따로 빼서(횡단 분리) 관리하는 것이다. 2. AOP 용어 조인포인트(Joinpoint) : 클라이언트가 호출하는 모든 비즈니스 메소드, 조인포인트 중에서 포인트컷되기 때문에 포인트컷의 후보로 생각할 수 있다. 포인트컷(Pointcut) : 특정 조건에 의해 필터링된 조인포인트, 수많은 조인포인트.. 개발일지/스프링 2024. 3. 3. 아이디, 비밀번호 찾기 기능 build.gradle // 이메일 인증 라이브러리 implementation group: 'javax.mail', name: 'mail', version: '1.4.7' 1. 가입했을시 작성한 이메일(PK)로 아이디(username) 찾기 UserRespository 네이티브 쿼리 사용 @Query(value = " select * from User where email = ?1 ", nativeQuery = true) Optional findByEmail(String email); UserService @Transactional public User searchUserEmail(String email) { return userRepository.findByEmail(email).orElseThrow(.. 개발일지/스프링 2023. 1. 8. 이전 1 2 3 4 다음