Back-end/SpringBoot (8) 썸네일형 리스트형 [SpringBoot] 제어의 역전(IOC), 프레임워크 vs 라이브러리 ✅ 제어의 역전(IOC) 전통적인-동작-방식class TraditionalService { private Dependency dependency; public TraditionalService() { this.dependency = new Dependency(); } public void doSomething() { dependency.performAction(); }}class Dependency { public void performAction() { // 비즈니스 로직 }} 기존의 전통적인 방식에서는, 객체를 직접 생성하고 관리하였습니다. 웹 서버에서도 마찬가지로, 클라이언트 구현 객체가 스스로 필요한 서버 .. [ SpringBoot ] 비동기 @Async 이해와 Thread Pool ✅ 비동기 프로그래밍이 필요한 이유비동기란 현재 처리중인 쓰레드에서 작업하던 Task를 다른 sub 쓰레드에게 Task를 위임하는 행위이다.비동기를 사용하면 클라이언트는 서버에게 요청을 하고 응답을 기다릴 필요가 없다. 그로 인해 더많은 Task를 처리할 수 있고, 실시간 성 응답이 필요없는 경우 유용하게 사용할 수 있다. 비동기가 필요한 경우 예시회원 가입 후 이메일 전송: 사용자는 회원가입을 완료하면, 이메일을 비동기적으로 처리하여 사용자는 회원가입만 완료되면 다른 작업을 처리할 수 있다.알림 기능: 특정 이벤트가 발생한 후 사용자에게 알림을 비동기적으로 보내어, 프로세스가 멈추지 않고 계속 실행하도록 한다. ✅ Thread Pool이란? Thread Pool이란 미리 일정한 수의 Thread.. [ SpringBoot] AOP ✅ AOP(Aspect Oriented Programming)란? AOP는 관점 지향 프로그래밍이다. AOP는 자바와 같은 객체 지향 프로그래밍(OOP)을 더욱 OOP 답게 사용할 수 있도록 도와주는 역할을 한다. AOP는 여러 개의 핵심 비즈니스 로직 외에 공통으로 처리되어야 하는 로그 출력, 보안 처리, 예외 처리와 같은 코드를 별도로 분리해서 하나의 단위로 묶는 모듈화의 개념으로 생각할 수 있다. AOP에서 관점은 핵심적인 관점과 부가적인 관점으로 나눌 수 있다. 핵심적인 관점은 핵심 비즈니스 로직을 의미하고, 부가적인 관점은 앞에서 말씀드린 공통으로 처리되어야 하는 코드를 의미 아래는 이해를 돕기 위한 이미지! 각각의 화살표는 하나의 기능을 구현하는 데 필요한 작업을 의미한다. MVC 패턴의 .. [SpringBoot] @JsonIgnoreProperties(ignoreUnknown=true) ✅ @JsonIgnoreProperties(ignoreUnknown=true)이 어노테이션의 역할은 역직렬화(deserialization) 과정에서,즉, JSON 데이터를 읽어 객체에 매핑해주는 과정에서 객체에 없는 알 수 없는 property가 JSON 데이터에 있어도 에러를 내뱉지 않고 무시해준다는 것이다. 🔎 예제 쇼핑몰의 특정 상품의 가격을 바꾸는 API를 통해 이 어노테이션을 사용하는 예를 러프하게 하나 들어보자. (1) 클라이언트 측에서는 해당 API의 Request Body에 아래와 같은 JSON 형태의 데이터를 담아 서버에 요청한다. { "price": 24000} (2) 서버에서는 요청 정보를 아래와 같은 PriceChangeRequest라는 객체로 받는다. public cla.. [SpringBoot] Object Mapper ✅Object MapperJava Object와 JSON의 형태를 자유롭게 변경하기 위해 사용되는 것이 Object Mapper이다.Serialize: Java Object → JSONDeserialize: JSON → Java Object형태를 바꿔주는 기능은 위의 두 가지 방식으로 나누어져 있으며 Object Mapper의 가장 중요한 기능이다 dependencies { ... implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.0'} 이렇게 Gradle에 의존성을 추가해도되지만 implementation 'org.springframework.boot:spring-boot-starter-web' 해당 의존성에 자동으로 포함되어있어서.. [SpringBoot] @Transactional 트랜잭션 사용법 및 옵션 ✅ Transactional스프링 환경에서는 @Transactional을 이용하여 메서드, 클래스, 인터페이스의 트랜잭션 처리가 가능한데 이러한 방식을 선언적 트랜잭션이라 부른다. 내부적으로 좀 뜯어보면 트랜잭션 기능이 들어가 있는 프록시 객체가 생성되어 자동적으로 커밋이나 롤백을 해준다고 생각하면 된다. 간단한 예시로 MemberService에서 MemberDTO 클래스를 insert를 하는 Service 내부의 메서드를 만든다고 가정해보면 아래처럼 구현을 할 수가 있다. @Service public class MemberService { ``` @Transactional public void addMember(MemberDto memberDto) throws Exception { // 멤버.. [SpringBoot] REST API 구조 설계 및 SpringBoot 응답 클래스 만들기(feat. SingleResult, ListResult) ✅ 리소스의 사용목적에 따라 Http method를 구분해서 사용Http 프로토콜은 여러 가지 사용목적에 따라HttpMethod를 제공한다.다음 4가지 HttpMethod를 상황에 맞게 API 구현에 사용할 것이다.GET - 서버에 주어진 리소스의 정보를 요청한다. (읽기)POST - 서버에 리소스를 제출한다. (쓰기)PUT - 서버에 리소스를 제출한다. POST와 달리 리소스 갱신 시 사용한다. 수정)DELETE - 서버에 주어진 리소스를 삭제 요청한다. (삭제 시) ✅ 리소스에 Mapping된 주소 체계를 정형화주소 체계는 아래처럼 정형화된 구조로 구성한다.HttpMethod를 통해 리소스의 사용 목적을 판단하는 것이 핵심이다.GET /v1/user/{msrl} - 회원 msrl에 해당하는 정.. [Springboot] REST API 만들고 슬라이스 테스트하기 (feat. HAL Explorer 사용하기) ✅ Spring Data RESTSpring Data 안에 있는 부속 기능으로 API를 빠르게 만들기를 도와준다.엔티티와 리포지토리 클래스를 이용해서 빠르게 RESTful한 API를 만들 수 있다.기본적인 데이터는 Data REST로 하고, 복잡한 데이터 전달은 별도로 만들어서 보충할 수 있다. API란 (application programming interface)● API는 컴퓨터나 컴퓨터 프로그램 사이의 연결이다. 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다.● API란 음식점의 점원같은 것이다.● API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체로 볼 수 있다. REST란● HTTP URI(Uniform Resource Identifier)를 통해 자원.. 이전 1 다음