목록Back-end/Spring (7)
쏭의 개발 블로그
지난 포스트에서의 Spring Boot와 Redis 연동 과정에서 언급했던 RedisSerializer 선택 기준에 대해 이 포스트에서 다뤄보고자 한다. Spring은 총 3가지 직렬화/역직렬화 클래스를 제공한다.JdkSerializationRedisSerializer, GenericJackson2JsonRedisSerializer, Jackson2JsonRedisSerializer 3가지를 지원한다.각 Serializer에 대해 알아보자. [1] JdkSerializationRedisSerializerJdkSerializationRedisSerializer는 Java의 기본 직렬화 기법인 JDK 직렬화를 사용하여 객체를 처리한다. RedisTemplate의 기본 직렬화 방식으로, 별도로 등록된 Seri..
프로젝트에서 Redis 관련 전역 환경 설정을 위해 Spring Boot와 Redis를 연동했다. 연동 방법과 그 과정에서 어떤 것을 고민했는지 기록하려고 한다. [1] Redis 의존성 추가 및 application.yml 설정먼저 Spring Boot에서 Redis를 사용하기 위한 의존성을 추가해보자. build.gradle에 Spring Data Redis 의존성을 추가해주면 된다. Spring Data Redis는 Spring에서 Redis연동을 쉽게 해주는 라이브러리로, RedisTemplate, StringRedisTemplate, Spring Cache 등의 기능을 제공한다.implementation 'org.springframework.boot:spring-boot-starter-data-..

Spring 프로젝트에서 WebClient를 사용하여 Open API를 호출하도록 구현해보면서 Spring WebFlux와 WebClient에 대해서 학습을 했었다. (물론 Servlet 애플리케이션이어서 WebClient만 사용하긴 했지만!) 평소에 개인 노션에 기록해뒀는데 블로그에도 작성해보려고 한다! [1] WebFlux란 클라이언트, 서버에서 Reactive 스타일의 애플리케이션 개발을 도와주는 스프링 모듈이다. 반응형 프로그래밍을 통해 높은 처리량과 확장성을 갖는 애플리케이션을 만드는 목적으로 reactive-stack web framework로 non-blocking과 reactive stream을 지원한다. 특징 Single-Thread와 Non-Blocking 방식을 사용하여 적은 수의 스..
1. DAO : Data Access Object (= Repository) DB의 데이터에 접근하기 위한 객체로 DB에 접근하기 위한 로직과 비즈니스 로직을 분리 repository 패키지 실제로 DB에 접근하여 데이터를 CRUD하는 객체로 Service와 DB를 연결해주는 역할 인터페이스와 구현체를 만들어 CRUD 관련 기능을 구현하고 DI 해줌 SQL을 사용하여 DB에 접근한 후 적절한 CRUD API를 제공 MyBatis 등을 사용할 경우 커넥션 풀까지 제공되므로 별도로 만드는 경우는 적음 2. DTO : Data Transfer Object 계층 간 데이터 교환을 하기 위해 사용하는 객체로 로직을 가지지 않는 순수한 데이터 객체 DTO 패키지 getter, setter만 가짐 DB에서 데이터를 ..

💡요약 (1) @Controller와 @RestController 차이점 ⇒ HTTP Response Body가 생성되는 방식 (2) @RestController = @Controller + @ResponseBody (3) 비교 [1] @Controller Model 객체를 만들어 데이터를 담고 View를 반환하는 것 클래스를 Spring MVC 컨트롤러로 표시하는 데 사용됨 @Target(value=TYEP) @Retention(value=RUNTIME) @Documented @Component public @interface Controller 동작구조 (1) Controller - View 클라이언트의 요청으로부터 view를 반환 Controller가 view를 반환하기위해 View Resolver..

[1] AOP란? 로직에 관점을 부여하는 프로그래밍 (Aspect Oriented Programming) 어떤 로직이 핵심 기능을 수행하며, 어떤 로직은 부가적인 기능을 수행하는지 관점을 부여해 분리 1. 필요성 기존 시간 측정 방식 : System.currentTimeMillis() 이용하여 시작과 종료 시점의 차이를 이용 시간 측정 기능은 핵심 관심 사항이 아니라 공통 관심사항 시간 측정 로직과 핵심 비즈니스 로직이 섞여 유지보수가 어려움 시간을 측정하는 로직을 별도의 공통로직으로 만들기 어려움 2. AOP 적용하기 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 시간 측정 로직을 한군데에 모으고 원하는 곳에 적용 시간 측정 AOP 등록 1. A..

1) 프레임워크란? 뼈대나 기반 구조 소프트웨어의 특정 문제를 해결하기 위해서 상호협력하는 클래스와 인터페이스의 집합 라이브러리 단순 활용가능한 도구들의 집합 개발자가 만든 클래스에서 호출 제어의 역전(IoC) 개념이 적용된 대표적인 기술 프레임워크 vs 라이브러리 프레임워크 : 전체적인 흐름을 스스로가 쥐고있음, 사용자가 그 안에 필요한 코드를 짬 라이브러리: 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는것 더보기 프레임워크와 라이브러리의 차이 어플리케이션의 흐름을 누가 쥐고 있느냐 프레임워크 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 작성 틀 안에 이미 제어 흐름에 대한 주도성이 있음 라이브러리 사용자가 전체적인 흐름을 만듦 라이브러리를 사용하고 호출하는 측에 ..