Framework & Library/Spring Boot
-
Spring Boot - CORS 설정Framework & Library/Spring Boot 2023. 3. 20. 15:34
CORS CORS란? CORS(Cross-Origin Resource Sharing)는 출처가 다른 자원들을 공유한다는 뜻으로, 한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근하도록 하는 개념이다. 직역하자면, 교차되는 출처 자원들의 공유이다. 다른 출처에 있는 자원을 요청한다고 하면, 이를 교차 출처 요청이라고 한다. CORS는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다. 웹 애플리케이션은 리소스가 자신의 출처와 다를 때 교차 출처 HTTP 요청을 실행한다. 출처란? 먼저 출처라는 개념을 알아야 한다. 위 사진은 URL이 어떤 구성요소로 이루어져 있는지 나타내고 있다. 위 구성..
-
Spring Boot - Jackson 라이브러리를 이용한 데이터 바인딩(2)Framework & Library/Spring Boot 2023. 2. 10. 13:51
Jackson 라이브러리를 이용한 데이터 바인딩(2) 지난 게시글에서는 getter(), setter() 메서드의 유무 또는 형태에 따라 직렬화, 역직렬화가 어떻게 이루어지는지 알아보았다. 이번 게시글에서는 생성자에서 데이터 바인딩이 어떻게 이루어지는지 여러 가지 상황을 통해 알아보겠다. 1. 기본적인 형태 @Getter @Stter public class Member { private Long id; private String name; private String address; private String email; public Member() { this.id = 0L; this.name = "No Name"; this.address = "No Address"; this.email = "No Ema..
-
Spring Boot - Jackson 라이브러리를 이용한 데이터 바인딩(1)Framework & Library/Spring Boot 2023. 2. 8. 14:52
Jackson 라이브러리를 이용한 데이터 바인딩(1) Jackson 라이브러리란? 오늘날의 거의 모든 웹 서비스는 JSON 형태로 데이터를 사용하고 생성한다. JSON 데이터를 애플리케이션 내의 POJO 객체로 변환하고 POJO 객체를 다시 JSON 형태로 변환해서 내보내는 역할이 필요한데, Spring에서는 보편적으로 이러한 역할을 Jackson 라이브러리가 도맡아 처리한다. 이처럼, Jackson은 JSON 처리를 위한 다목적 고성능 Java 라이브러리이다. Java 객체를 JSON 형태로 또는 JSON을 Java 객체로 변환하는 데 사용되는 바인딩 기능을 제공해 준다. 이번 게시글에서는 어떻게 Jackson 라이브러리가 JSON 데이터를 POJO 객체로 변환하는지를 알아보겠다. ※ POJO : 특정..
-
Spring Boot - @PathVariable & @RequestParam & @ModelAttributeFramework & Library/Spring Boot 2023. 2. 6. 13:27
@PathVariable & @RequestParm & @ModelAttribute @PathVariable http://localhost:8080/api/member/17 http://localhost:8080/api/member/25 REST API에서 위와 같이 URI에 변수가 들어가는 것을 본 적 있을 것이다. 위 URI에서 밑줄 친 부분이 @PathVariable 애너테이션으로 처리해 줄 수 있는 부분이다. 이처럼, URI에 파라미터를 포함시킨 요청을 @PathVariable 애너테이션을 사용하여 처리할 수 있다. @RestController public class MemberController { @GetMapping("/member/{id}/{name}") public String findM..
-
Spring Boot - DI(Dependency Injection)의 세 가지 방법Framework & Library/Spring Boot 2023. 2. 5. 18:28
DI(Dependency Injection) 세 가지 방법 Field Injection(필드 주입) @Controller public class SampleController { @Autowired private SampleService sampleService; } ㆍ 필드 주입 방식은 의존성 주입을 받을 변수 선언부에 위와 같이 @Autowired 애너테이션을 선언함으로써, 사용이 가능하다. ㆍ 코드가 간결하고 편하지만, 의존관계를 정확하게 파악하기 힘들다. ㆍ 필드 주입 시 final 키워드를 선언하지 못하기 때문에, 객체가 변할 수 있다는 단점이 존재한다. ㆍ 주입이 동시에 일어나는 경우 순환참조 에러를 발생시킨다. Setter Injection(수정자 주입) @Controller public c..
-
Spring Boot - Service와 ServiceImpl 구조Framework & Library/Spring Boot 2023. 2. 5. 17:06
Service와 ServiceImpl 구조 Service와 ServiceImpl 구조를 사용하는 이유 대부분의 프로젝트는 Service 클래스를 만들 때 MemberService와 같은 인터페이스를 설계한 후 MemberServiceImpl이라는 구현체 클래스를 생성해서 사용하는 방식으로 설계된다. 위와 같은 Service와 ServiceImpl을 구분해서 설계하는 이유는 인터페이스와 구현체를 분리함으로써 구현체를 독립적으로 확장할 수 있으며, 구현체 클래스를 변경하거나 확장해도 이를 사용하는 클라이언트의 코드에 영향을 주지 않도록 하기 위함이다. 이 같은 추상화를 통한 구현 방식은 객체지향 특징 중 하나인 다형성과 객체지향의 다섯 가지 원칙 중 하나인 OCP 원칙을 가장 잘 실현해 주는 설계 방식이다...