Spring 로고오늘은 Spring Framework가 무엇인지 알아보겠습니다.Spring Framework가 어디서 오게 되었는지 간단히 살펴보면, Spring Framework가 등장하기 전에는 EJB라는 기술을 통해 웹 애플리케이션을 개발하였습니다. 하지만, 개발
Spring 로고웹 프로그래밍에서 클라이언트의 요청을 처리하고, 그 결과를 클라이언트에게 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 입니다.다시 말해서, Java를 웹 어플리케이션을 개발하기 쉽게 만들기 위한 API(라이브러리, 클래스
스프링 컨테이너 내의 스프링 빈으로 등록하기 위한 방법에는 두 가지가 있습니다. 컴포넌트 스캔과 자동 의존관계 설정자바 코드로 직접 스프링 빈 등록하기오늘은 컴포넌트 스캔과 자동 의존관계 설정에 대해 알아보겠습니다. 컴포넌트 스캔은 @Component 어노테이션이 있으
이전 게시물에서 스프링 빈을 등록하는 방법에는 두 가지가 있다고 하였습니다. 오늘은 그 중 두 번째 방법인 자바 코드로 직접 스프링 빈을 등록하는 방법을 살펴보겠습니다.먼저 MemberService에서 @Service 어노테이션과 @Autowired 어노테이션을 삭제하
스프링 부트가 제공하는 기능 중에 Welcome Page가 있습니다. resources - static - index.html 파일을 만들면 이 파일은 Welcome page 기능을 하게 됩니다.즉, 이 파일은 localhost:8080에 들어가면 나오는 첫 화면이 되
@SpringBootTest : 스프링 컨테이너와 테스트를 함께 실행 즉, 실제 스프링을 띄워서 실행한다.@Transactional : 테스트 케이스에 이 어노테이션이 있으면 테스트 시작 전에 트랜잭션을 먼저 시작한다. DB에 데이터 넣은 후 테스트가 끝나면 롤백을 해
JDBC -> JdbcTemplate 로 바꾸면 반복적인 코드가 줄게 되지만, SQL은 여전히 개발자가 직접 작성해야 한다.하지만 JPA를 사용하면 SQL 쿼리도 JPA가 처리를 해줘 개발 생산성을 높일 수 있다.JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도
모든 메소드의 호출 시간을 측정하고 싶을 때공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)ms로 시간을 조회하는 코드를 추가해보았다.지금은 join 메소드 하나에만 추가를 했지만 모든 메소드의 호출 시간을 알기 위
데이터들이 프로그램이 종료되어도 사라지지 않고 어떤 곳에 저장되는 개념을 영속성(Persistence) 이라고 한다.자바에서는 데이터의 영속성을 위한 JDBC를 지원해주는데, 이는 매핑 작업을 개발자가 일일히 수행해야 하는 번거로움이 있다.SQL Mapper와 ORM은
스프링 부트스프링 프레임워크스프링 데이터 - JPA를 가장 많이 사용스프링 세션 - 세션 기능스프링 시큐리티 - 보안스프링 Rest Docs - API 문서 편리하게스프링 배치스프링 클라우드 - 클라우드 기술등등..핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트,
⚡ 다시 한 번 강조!역할과 구현을 철저하게 분리하여 설계해야 한다. 언제든지 갈아끼울 수 있도록!클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리SRP : 단일 책임 원칙 (single responsibility principle)OCP :
📌 지난 게시물에서 배운 내용 되짚기모든 설계에 역할과 구현을 분리하기이상적으로는 모든 설계에 인터페이스를 부여하자 -> 변경의 범위가 작고 유연해짐BUT 인터페이스를 도입하면 추상화라는 비용 발생따라서, 기능을 확장할 가능성이 없다면 구체 클래스를 직접 사용하고,
아래 요구를 통해 회원 도메인을 설계해보도록 하겠다.회원을 가입하고 조회할 수 있다.회원은 일반과 VIP 두 가지 등급이 있다.회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)요구 사항을 보면, 회원 데이터 부분은 현재 결정하기 어
📌 할인정책 요구사항할인 기준 : 회원 등급에 따라 할인 정책을 적용할 수 있다.할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.)할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고
할인정책(DiscountPolicy) 인터페이스에는 1\. FixDiscountPolicy(고정할인) 2\. RateDiscountPolicy(정률할인)라는 구현체가 있다.< DiscountPolicy > 인터페이스(역할)할인정책은 여러가지가 있을 수 있다.고정
✨ 해결방법 !! -> 관심사의 분리
<현재 AppConfig>문제점 : 중복이 있고, 역할에 따른 구현이 한눈에 보이지 않음리팩터링(Ctrl + Alt + M)을 했더니,MemberService 역할, MemberRepository 역할, OrderService 역할, DiscountPolicy 역
AppConfig에 아래 어노테이션을 붙인다.import org.springframework.context.annotation.Configuration;\-> @Configuration@Configuration : 애플리케이션의 설정 정보 라는 뜻! AppConfig에
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);ApplicationContext는 스프링 컨테이너라고 한다.ApplicationContext는
assertThrows 메소드는 발생이 예상되는 예외의 타입, 예외가 발생될 수 있는 코드 블록을 파라미터로 받아서 실행된다.이 때, assertThrows 내부에서는 예외가 발생될 수 있는 코드 블록을 실행한다.만약 해당 코드 블록을 실행하는 중에 예외가 발생한다면
스프링 빈 등록 -> 빈 등록이 다 끝난 후, 스프링 빈 의존관계 설정생성자를 통해서 의존 관계를 주입 받는 방법생성자 호출시점에 딱 1번만 호출되는 것이 보장 -> 1번 세팅 이후에는 세팅 불가⭐불변, 필수⭐ 의존 관계에 사용빈을 등록하면서 의존관계 주입도 함께 실행
계층 간 데이터 교환을 하기 위해 사용하는 객체Entity를 Controller 같이 클라이언트단과 직접 마주하는 계층에 직접 전달하는 대신, DTO를 사용해 데이터를 교환순수한 데이터 객체ex) 유저가 입력한 데이터를 DB에 넣는 과정1\. 유저가 자신의 브라우저에서