본문 바로가기

반응형

개발/Spring Boot

[Spring Boot] Controller 기능 vs 테이블? Spring에서 Controller를 나누는 방법에 대해 논할 때, 두 가지 주된 접근법이 있습니다: 기능 단위로 나누기와 테이블 단위로 나누기입니다. 각각의 접근법에는 장단점이 있으며, 선택은 프로젝트의 성격과 팀의 요구사항에 따라 달라질 수 있습니다. 다음은 각 접근법의 장단점을 비교한 것입니다.기능 단위로 나누기장점:응집력: 동일한 기능과 관련된 모든 엔드포인트가 한 곳에 모여 있어 코드의 응집력이 높아집니다.유지보수 용이: 특정 기능을 수정하거나 확장할 때, 관련된 코드가 한 파일에 모여 있어 유지보수가 용이합니다.이해하기 쉬움: 팀원들이 특정 기능의 전체 흐름을 이해하기 쉽습니다.단점:복잡성 증가: 기능이 많아질수록 각 Controller 파일이 커질 수 있어 복잡해질 수 있습니다.코드 중복: .. 더보기
[Spring Boot] JPA vs mybatis 안녕하세요! 좋은 질문입니다. MyBatis와 JPA를 혼용하여 사용하는 경우는 실제로 존재하며, 두 가지를 함께 사용하는 이유는 각기 다른 장단점을 보완하기 위함입니다. 각각의 특성을 이해하면 왜 혼용해서 사용하는지 더 명확하게 알 수 있습니다.JPA의 장점과 단점장점:객체 지향적 데이터베이스 접근: JPA는 객체 지향 프로그래밍을 지원하여 엔터티를 통해 데이터베이스를 조작합니다.자동화된 CRUD: 기본적인 CRUD(Create, Read, Update, Delete) 작업을 자동으로 처리해주는 기능을 제공합니다.JPQL: 객체 중심의 쿼리를 작성할 수 있는 언어를 제공하여, SQL을 직접 사용하지 않아도 됩니다.캐싱: 1차 및 2차 캐시를 통해 성능을 최적화합니다.단점:복잡한 쿼리의 어려움: 복잡한 .. 더보기
[Spring Boot] Spring Interceptor 란? (HandlerInterceptor) HandlerInterceptor는 스프링 프레임워크의 인터페이스로, 특히 스프링 MVC 모듈 내에 있습니다. 이 인터페이스를 사용하면 들어오는 HTTP 요청과 나가는 HTTP 응답을 가로채고, 사전 처리 및 사후 처리 작업을 수행할 수 있습니다. 스프링 MVC 애플리케이션에서 인터셉터는 이력관리, 로깅, 인증, 권한 부여, 세션 관리 등과 같은 교차 관심사를 구현하는 데 사용됩니다. HandlerInterceptor 인터페이스를 구현함으로써 사용자 정의 로직을 정의하여 (preHandle 메서드) 컨트롤러가 요청을 처리하기 전 (postHandle 메서드) 컨트롤러 로직이 실행된 후이지만 뷰가 렌더링되기 전 (afterCompletion 메서드) 및 뷰가 렌더링된 후에 실행될 수 있습니다 여기 Hand.. 더보기
[Spring Boot] Websocket 적용 실시간 정보 조회를 위하여 Websocket을 사용할 일이 있어 적용하였다. 1. 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-websocket' 2. config 추가 package com.hyeon.backend.config; import com.hyeon.backend.controller.ws.WebsocketController; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebS.. 더보기
[Spring Boot] multipart/form-data 적용법 Spring Boot에서 API를 통하여 multipart/form-data로 받는 방법을 설명하려고 한다. 1. PostMapping의 내용에 produces, consumes, MultiValueMap은 어떤 의미인지 알아보자. - produces : Client가 Server에게 요청을 할때 보내는 규격이다. - consumes : Server가 Client에게 응답을 주는 규격이다. - MultiValueMap : Map이랑 비슷하지만 add 메소드를 실행시 이미 키가 있다면 배열로 데이터를 집어넣어주는 객체이다. 해당 객체는 Java에서 제공하는 것이 아닌 Spring Framework에서 제공한다. @PostMapping( value = "test", produces = "application.. 더보기
[Spring Boot] Spring Boot 3.x Swagger 적용기 오늘은 spring boot 3.x 버전에 swagger를 적용시켜 보려한다. 스웨거를 간단히 설명하자면. 개발자가 생성한 REST API를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 주의점 외부에 노출되면 안되는 API를 선정하여 숨김처리를 잘 하여야한다. Spring Boot에는 swagger를 적용시킬 수 있는 라이브러리가 두개가 있다. springfox, springdoc 2012 ~ 2015 : Swagger SpringMVC 이름으로 springfox 라이브러리가 많이 사용 됨. 2015 ~ 2018 : springfox-swagger 업데이트가 활발히 이루어짐. 2018 ~ 2020 : fox 업데이트가 진행되지 않아 .. 더보기
[Spring Boot] JDBC Template이란? JDBC Template 소개 JDBC Template은 Java에서 데이터베이스와의 상호 작용을 쉽게 만들어주는 스프링 프레임워크의 일부입니다. 이를 통해 개발자는 SQL 쿼리를 실행하고 데이터베이스와 상호 작용하는 코드를 간소화할 수 있습니다. 설정 방법은 2가지가 있다. 1. yml에서 설정하는 방법 spring.datasource.url=jdbc:mysql://localhost:3306/yourdatabase spring.datasource.username=yourusername spring.datasource.password=yourpassword spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 2. Spring Bean으로 등록하여 .. 더보기
[Spring Boot] Mock MVC란? 소개 스프링(Spring) 프레임워크에서 제공하는 테스트 유틸리티 중 하나로, 웹 애플리케이션의 컨트롤러를 테스트하는 데 사용됩니다. Mock MVC는 실제 서버나 네트워크 연결 없이도 컨트롤러의 동작을 시뮬레이션하고 테스트할 수 있도록 도와줍니다. 특징 가상의 HTTP 요청과 응답: Mock MVC는 HTTP 요청을 생성하고 가상의 HTTP 응답을 받는 환경을 제공합니다. 이를 통해 웹 애플리케이션의 컨트롤러 동작을 테스트할 수 있습니다. 컨트롤러 단위 테스트: 웹 애플리케이션에서 컨트롤러는 클라이언트로부터의 HTTP 요청을 받아 처리하고, HTTP 응답을 생성하는 역할을 합니다. Mock MVC를 사용하면 실제 서버를 기동하지 않고도 컨트롤러를 단위 테스트할 수 있습니다. HTTP 메서드 지원: Mo.. 더보기

반응형