본문 바로가기
반응형

Study/Spring Boot16

[Spring Boot] Spring과 Android에서 RabbitMQ 사용해보기 Intro 프로젝트 진행 중 실시간으로 주문 상태를 알려주는 서비스를 제공하는 요구사항이 추가됐다. 어떤 기술을 사용해야 할 지 찾아보다가, 메시지 큐를 사용하면 된다는 것을 알게 되었다. Kafka, RabbitMQ, Redis, Mosquitto 등 다양한 기술 중 RabbitMQ가 지금 프로젝트에 가장 적합하다고 판단되어 적용하기로 했다. 시나리오 상 Spring이 Publisher, Android가 Subscriber이기 때문에 이 예제도 동일하게 진행했다. 소스코드는 Github에 업로드 되어있다. GitHub - DevJaewoo/blog-code Contribute to DevJaewoo/blog-code development by creating an account on GitHub. gi.. 2022. 9. 7.
[Spring Boot] Spring Data Redis 사용해보기 Intro Github나 다른 블로그를 돌아다니며 남들이 진행한 프로젝트를 보다 보면 백엔드 구조에 Redis란 것을 자주 볼 수 있다. 주로 캐시 데이터나 세션을 저장하는 용도로 사용되는데, 이번 시간에는 Redis가 무엇인지, 어떤 특징을 갖고 있는지, 언제 사용하는지에 대해 알아보고, 간단한 예제를 통해 직접 사용해보자. Redis란? Remote Dictionary Server의 약자로, Key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 DBMS이다. 인메모리 방식의 데이터 저장소로, 일반적인 DB에 비해 속도가 빠르다. Redis의 특징 데이터를 디스크가 아닌 메모리에서 처리하기 때문에 속도가 매우 빠르다. String, Set, Sorted Set, Hash, List와 같이 다.. 2022. 9. 4.
[Spring Boot] AOP 적용해보기 Intro AOP는 Aspect Oriented Programming의 약자로, 관점 지향 프로그래밍이라는 뜻을 갖고 있다. 여러 모듈들에서 공통 관심 사항을 묶어 핵심 관심 사항과 따로 분리시켜버리는 것이다. 예를 들어 모든 함수의 실행시간을 측정하고 싶다고 할 때, 원래는 함수 하나하나 들어가서 아래와 같이 시간 측정 코드를 넣어줘야 한다. private void function() { long start = System.currentTimeMillis(); try { //기존 코드 } finally { long finish = System.currentTimeMillis(); long timeMs = finish - start; System.out.println("Total time: " + tim.. 2022. 2. 15.
[Spring Boot] Spring Data JPA 써보기 Intro 이전 시간에 JPA를 사용해서 DB와 연결해봤다. JDBC에서 JPA로 대체하는것 만으로도 코드가 엄청 많이 줄었는데 여기서 더 줄이는 방법이 있다고 한다. 바로 Spring Data JPA를 사용하는 것이다. Spring Data JPA 써보기 우선 SpringDataJpaMembeRepository 인터페이스를 만들어주고, JpaRepository랑 이전에 만든 MemberRepository를 상속시켜주자. SpringDataJpaMemberRepository.java package com.devjaewoo.hellospring.repository; import com.devjaewoo.hellospring.domain.Member; import org.springframework.data.. 2022. 2. 15.
[Spring Boot] JPA로 JdbcTemplate 대체하기 Intro JPA는 Java Persistence Api의 약자로, SQL을 직접 작성하지 않고도 객체를 통해 DB를 구성해준다. JPA를 사용하면 SQL과 데이터 중심 설계에서 객체 중심 설계로 패러다임 전환이 가능하기 때문에 개발 생산성을 크게 높일 수 있다. JPA 테스트케이스 작성 JPA를 사용하기 위해 Dependency를 추가해주자. JPA에서 JDBC를 포함하기 때문에 원래 있던 JDBC Dependency를 지우고 아래의 코드를 넣어주면 된다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' //implementation 'org.springframework.boot:spring-boo.. 2022. 2. 15.
[Spring Boot] 스프링 통합 테스트 케이스 만들기 Intro 이전에 JdbcTemplate를 이용해 데이터를 메모리가 아닌 DB에 접근하도록 변경했다. 그렇기 때문에 기존의 테스트는 스프링과 상관없이 순수 Java 코드를 이용한 테스트였는데, 이제부터는 DB 서버 URL, 설정 등을 스프링이 갖고 있기 때문에 서버를 올려 테스트를 진행해야 한다. 테스트 케이스 작성 우선 서비스의 기능은 같기 때문에 이전에 만들었던 MemberServiceTest를 복사해서 가져오자. MemberServiceIntegrationTest.java package com.devjaewoo.hellospring.service; import com.devjaewoo.hellospring.domain.Member; import com.devjaewoo.hellospring.repo.. 2022. 2. 15.
[Spring Boot] JdbcTemplate로 MemoryRepository 대체하기 Intro 데이터가 메모리에 저장돼 서버를 껐다 켜면 데이터가 날아가는 현상을 방지하기 위해 JdbcTemplate를 사용할 것이다. JdbcTemplate를 사용하면 기존 JDBC의 반복 코드를 대부분 제거해 SQL과 결과 처리에 집중할 수 있도록 지원해준다. JDBCTemplate 적용 JdbcTemplate를 사용하기 위해 gradle 파일에 JDBC를 implement 해줘야 한다. build.gradle dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-jdbc' ... } 이제 MemberRepository를 구현하는 JdbcTemplateMemberRepository 클래스를 만들고, JdbcTemp.. 2022. 2. 14.
[Spring Boot] h2 Database 설정하기 h2 Database 설정하기 DB 접근 코드를 작성하기에 앞서 h2 DB부터 설치해주자. 우선 gradle에서 h2 관련 dependency를 추가한다. build.gradle dependencies { ... runtimeOnly 'com.h2database:h2' ... } 이제 DB 서버를 열 차례다. 아래의 사이트에서 다운로드 받거나, application.yml (application.properties)를 수정해서 서버를 열 수 있다. 난 다운로드 받지 않고 application.yml을 조금 더 수정하는 방식으로 했다. https://www.h2database.com H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the f.. 2022. 2. 14.
[Spring Boot] h2 DB에 TCP 접근 시 SocketTimeoutException 뜰 때 h2 DB SocketTimeoutException 해결방법 h2 콘솔에서 JDBC URL에 TCP를 넣어 연결할 경우 Timeout이 발생하는 경우가 있다. h2 Database가 기본적으로 TCP 연결을 허용하지 않아 생기는 오류로, 서버가 열릴 때 아래의 같이 TCP 관련 옵션을 추가해서 열어주도록 하면 해결된다. java -jar .\hello-spring.jar -tcp -tcpAllowOthers 2022. 2. 14.
반응형