spring 3

스프링 테스트 환경 통합해서 비용 줄이기(통합 테스트)

배경현재 3 Tier Architecture인 Presentation layer ↔ Business layer ↔ Persistence layer 구조를 이루고 있습니다.CouselController, CounseService, CounselRepository 총 3개에 클래스에 대해 테스트를 작성합니다.아래 예시 코드를 보면 CounselService의 createCounsel 메서드를 보면 내부적으로 counselRepository의 save 메서드를 호출합니다. 이와 같이 PostService에서 PostRepository 의존성 주입 이후 사용되기에 테스트를 위해서는 범위를 CounselService와 CounselRepository까지 고려해야 합니다.@Service@RequiredArgsCon..

spring 2024.07.09

스프링 핵심 원리 - 기본

인프런 김영한 강의와 자료를 토대로 부분적으로 요약했단 점 참고바랍니다. 앞 글에서 좋은 객체 지향 설계의 원칙 5가지(SOLID)를 지키기 위해 역할(인터페이스)과 구현(클래스)을 분리했다. 그렇지만 구현체를 바꿀 때 마다 코드 수정으로 인해 OCP 위반과 구현체(클래스)에 의존하므로 DIP 위반을 일어난다. DIP를 지키기 위해 위 처럼 코드를 변경한다 하더라도 구현체가 없으므로 NPEE(null pointer exception)가 발생한다. 이 문제를 해결하기 위해 관심사를 분리한다. 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스(AppConfig)를 만들면 생성자를 통해 주입해줘 OCP와 DIP를 지킬 수 있다. IoC, DI, 컨테이너 제어의 역전 IoC(Inversion o..

spring 2023.03.06

객체 지향 설계와 스프링

스프링이란? 스프링 생태계 스프링은 무엇일까? • 스프링이라는 단어는 문맥에 따라 다르게 사용된다. • 스프링 DI 컨테이너 기술 • 스프링 프레임워크 • 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계 중요한 것은 스프링이 만들어진 이유이다. 웹 어플리케이션 생성과 DB 접근을 편리하게 해주고 웹 서버를 자동으로 띄워주기도 한다. 여러 가지가 있지만 핵심은 스프링이 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크인 것이다. • 스프링은 자바 언어 기반의 프레임워크 • 자바 언어의 가장 큰 특징 - 객체 지향 언어 • 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크 • 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 좋은 객체..

spring 2023.03.05