아무거나 개발공부/스프링 완전 정복 4

스프링 부트 2.x 에서 3.x 로 버전 업 시 발생하는 이슈

개요 스프링 부트 2.x 에서 3.x 로 마이그레이션하면서, 여러 이슈가 있었는데, 그 중org.apache.httpcomponents.client5 의존성은 개인적으로 까다롭고, 바뀐 버전에 대해 정확히 알아보고 사용해야 할 것 같아 정리한다. pom.xml 수정 BEFORE org.apache.httpcomponents httpclient 4.5.13 AFTER org.apache.httpcomponents.client5 httpclient5 5.2.1 RestTemplate 버전 업 이후, RestTemplate설정 부분에서 에러가 발생하였다. 원인은 Spring Framework 6(스프링 부트 3.x)에서 HttpClient 4 라이브러리가 삭제되었기 때문이다. 아래 스프링 공식문서 참고 Dep..

스프링 핵심 원리이해 - 빈 Life Cycle 콜백

스프링 빈은 아래와 같은 life cycle을 가진다. “객체생성 → 의존관계 주입?” 의존관계 주입까지 마쳐야 스프링 빈을 사용할 준비가 완료 된 것이다. 따라서 초기화 작업도 의존관계 주입이 끝난 이후에 진행해야 하는데, 이를 개발자가 어떻게 알 수 있을까? 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한, 스프링은 스프링 컨테이너가 종료되기 직전에 스프링 빈에게 소멸 콜백을 준다. “스프링 이벤트 Life Cycle” 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료 스프링은 크게 3가지 방법으로 빈 Life Cycle 콜백을 지원한다. 인터페이스(bean ..

스프링 핵심 원리이해 - 객체 지향 설계 (1)

컴공에 입문하거나, 혹은 프로그래밍을 한다면 객체 지향 설계에 대해 안들어 볼 수가 없다. 또, 현재 대한민국은 자바공화국이라 불릴만큼 자바를 많이 사용하고, 스프링 프레임워크를 같이 사용하고 있다. 스프링의 핵심 스프링은 자바 언어 기반의 프레임 워크 자바는 객체 지향 언어 스프링은 객체 지향 언어가 가장 강력한 특징을 살려내는 프레임워크 스프링은 좋은 객체 지향 애플리케이션을 개발 할 수 있게 도와주는 프레임워크 -> 그렇다면 좋은 객체 지향이란 무엇일까? 좋은 객체 지향 객체 지향 프로그래밍은 유연하고 변경이 용이(다형성) 하게 만들기 때문에 대규모 SW개발에 많이 사용된다. SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면..

스프링 핵심 원리이해 - 객체 지향 설계 (2)

새로운 정책 개발 다형성 활용을 잘한 코드라면 새로운 정책을 추가하는데 아무 문제 없음 하지만 새로운 정책 적용에 문제가 있음 클라이언트 코드인 주문 서비스 구현체도 함께 변경필요 클라이언트가 인터페이스뿐만아니라 구현체도 함께 의존 → DIP 위반 관심사의 분리 AppConfig는 구현 객체를 생성하고 연결하는 책임 AppConfig의 등장으로 기존의 클라이언트 코드에서 구현체를 생성할 필요가 없어짐 결과적으로 클라이언트 객체는 자신의 역할을 실행하는 것만 집중, 권한이 줄어듬(책임이 명확해짐) AppConfig 리팩토링 구성 정보에서 역할과 구현을 명확하게 분리 역할이 잘 들어남 중복 제거 기존코드 public class OrderServiceImpl implements OrderService { //..

728x90