백엔드 개발자 혹은 백엔드 개발자를 꿈꾼다면 Spring은 누구나 들어봤다.그러면 Spring은 왜 등장했을까? 옛날에는 자바 기술인 EJB를 사용해 기업에서 application을 개발했다. 그러나 EJB는 너무나 복잡하고 무거워서 많은 개발자들의 격노를 일으켰다고
객체 지향 프로그래밍 : 여러 독립적인 객체들의 결합과 협력으로 결과를 출력한다.OOP(Object-Oriented Programming)와 같은 말로, 명령어가 나열된 프로그램이 아닌 각각의 객체가 서로 메시지를 주고받으며 데이터를 처리하고 결과를 도출한다.마치 바퀴
Clean code로 유명한 Robert Martin이 좋은 객체 설계의 5가지 원칙을 정리했다.하나씩 알아보자.Single Responsibility Principle하나의 클래스는 하나의 책임만 가져야한다."책임"은 상황에 따라 클 수도, 작을 수도 있다.변경 시
아래 Client가 접근할 코드를 살펴보자.위 코드의 문제점은 무엇일까?DIP 위반 : Client가 Interface(DiscountPolicy)를 의존함과 동시에 Class(FixDiscountPolicy,RateDiscountPolicy)에도 의존한다.마치 공연에
Inversion of Control이전 글에서의 AppConfig의 역할을 떠올려보자.기존에는 Client 코드에서 구현 객체를 생성하여 실행됐지만, AppConfig의 등장으로 Client 코드는 자신의 로직만 실행하게 됐다.즉, 프로그램의 제어 흐름을 AppCon
ApplicatoinContext는 Spring 컨테이너의 최상위 Interface인 BeanFactory를 상속받은 Class이자 Spring 컨테이너이다.Spring 컨테이너 : 객체들의 설정 정보를 전달받아 생성하고 관리하는 역할이다.Spring 컨테이너는 Int
우선, 스프링 없는 순수 Java로 이루어진 DI 컨테이너를 떠올려보자.여러 Client가 객체를 요청하면, 아래와같이 호출할 때마다 새로운 객체를 생성하여 반환할 것이다.이는 수천개의 요청이 들오오면 객체또한 수천개를 생성하게 됨을 의미하고, 심각한 메모리 낭비를 야
이전까지 우리는 아래와같이 @Bean을 통해 Spring 컨테이너에 Spring Bean을 등록했다.AppConfig.java등록해야 할 Bean이 많아질수록, 누락할 위험과 번거로움을 감수해야할 것이다.따라서, Spring은 @ComponentScan을 통해 설정 정
의존관계 주입 방법 객체 간의 관계, 즉 의존관계는 @Autowired를 통해 설정한다. 이러한 의존관계 주입의 방법은 네 가지가 있다. ❗️생성자 주입 : 생성자가 하나일 경우 생략 가능하다. Setter 주입 필드 주입 일반 메서드 주입 ![](https:/
Spring Bean의 데이터를 사용하는 것은 의존관계 주입이 끝난 이후에야 가능하다.그렇다면 개발자는 의존관계 주입이 완료된 시점을 어떻게 알 수 있을까?Spring Bean은 다음과같은 생명주기를 가진다.Spring 컨테이너 생성 $\\to$ Spring Bean
발생한 행위에 대한 정보를 시간에 따라 남겨둔 데이터아래는 로그의 예시이다.기본적으로 시간, 로그 레벨, 프로세스 ID, 쓰레드 네임, 클래스 네임, 로그 메시지 형식을 갖는다.로그는 System.out.println()과 마찬가지로 console에 출력된다.그렇다면
컨트롤러 클래스를 지정함으로써, 요청과 관련된 메서드를 처리할 수 있게된다.메서드의 반환 값이 String일 경우, view 이름으로 인식하여 view가 렌더링 된다.@Controller와 같은 기능을 제공한다. 다만, 차이점이 존재한다.반환 값이 String일 경우,
Redis Tutorial을 진행해봅시다!