스프링30 [Spring] 스프링 MVC - 기본 기능 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 요청 매핑 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 ● MappingController @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * 둘다 허용 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMapping("/hello-basic") public String h.. BackEnd/Spring MVC 2022. 2. 26. [Spring] 스프링 MVC - 구조 이해 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 MVC 전체 구조 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 MVC도 프론트 컨트로러 패턴으로 구현되어있다. MVC의 프론트 컨트롤러가 바로 DisaptcherServlet 이다. ● DispacherServlet 서블릿 등록 DispacherServlet 도 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다. DispatcherServlet => FrameworkServlet => HttpServletBean => HttpServlet 스프링 부트는 DispacherServlet 을 서블릿으로 자.. BackEnd/Spring MVC 2022. 2. 25. [Spring] MVC 프레임워크 만들기 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 4. 단순하고 실용적인 컨트롤러 - v4 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지난 글에서 만들었던 v3 컨트롤러는 서블릿의 종속성을 제거하고, 뷰 경로의 중복을 제거하는 기능을 하여 잘 설계된 컨트롤러 이다. 하지만 실제 개발자가 컨트롤러 인터페이스를 구현할때마다 항상 ModelView객체를 생성하고 반환해야 하는 부분이 번거롭다. 좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자가 단순하고 편리하게 사용할 수 있어야 한다. 소위 실용성이 있어야 한다. 이번 V4는 좀더 개발자에게 실용적인 버전을 만들어 보자. 우선 그.. BackEnd/Spring MVC 2022. 2. 23. [Spring] 빈 스코프 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 빈 스코프란? " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 빈 스코프란 말 그대로 빈이 생존할 수 있는 범위(기간)을 의미한다. 지금까지 공부했던, 스프링 컨테이너가 생성될때 같이 생성되서 ~ 스프링 컨테이너가 종료될때 까지 유지되는 범위는 싱글톤 범위이다. 스프링은 다음과 같은 다양한 스코프를 지원하고 있다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스.. BackEnd/Spring 2022. 2. 8. [Spring] 빈 생명주기 콜백 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 빈 생명주기 콜백 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 개발자는 의존관계 주입이 모두 완료된 시점을 어떻게 알고 사용할까? 스프링은 의존관계 주입이 완료되면 스프링빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공한다! 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 통하여 clean up 과정을 갖도록 해준다. 싱글톤 스프링 빈의 라이프 사이클은 다음과 같다. 스프링컨테이너생성 => 스프링빈생성 => 의존관계주입 => 초기화콜백 => 사용 => 소멸전 콜백 => 스프링 종료 다만 위의 라이프 사이클은 sett.. BackEnd/Spring 2022. 2. 7. [Spring] 컴포넌트 스캔 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지금까지의 AppConfig를 생각하면, @Bean으로 생성할 빈 객체에 대한 정보를 적어줬었다. 하지만 컴포넌트 스캔을 이용하면 빈을 자동 등록할 수 있다. 이전까지의 예제에서는 등록한 스프링 빈이 적어서 수동으로 가능했지, 30개만 되도 수동으로 @Bean을 적어 등록하기는 힘들어진다... 따라서 보통 컴포넌트 스캔을 이용한다. 바뀐 AutoAppConfig는 다음과 같다. @Configuration @ComponentScan( excludeFil.. BackEnd/Spring 2022. 2. 4. [Spring] 싱글톤 컨테이너 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 싱글톤 컨테이너 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 컨테이너는 싱글톤 패턴을 적용하지 않아도 객체 인스턴스를 싱글톤으로 관리한다. 이렇게 싱글톤 객체를 생성하고 관리하는 기능을 싱글톤 레지스트리 라고 한다. 이러한 기능 덕에 싱글톤을 위한 지저분한 코드가 들어갈 필요도 없으며, DIP, OCP, 테스트 등 의 제약사항이 없어진다 할 수 있다! 간단한 테스트 하나 해보자~ @Test @DisplayName("스프링 컨테이너와 싱글톤") void springContainer(){ ApplicationContext ac = ne.. BackEnd/Spring 2022. 2. 3. [서평] 스프링 부트 퀵스타트 저의 돈으로 직접 사서 직접 완독해 본 후 써보는 후기입니다. 따라서 장점은 장점대로 칭찬할 것이며, 단점은 단점대로 언급할 것입니다. 스프링 부트 퀵스타트 누구나 끝까지 따라 할 수 있는 스프링 부트이 책은 스프링 부트의 자동설정을 시작으로, 스프링 데이터 JPA를 이용한 데이터베이스 처리, 타임리프를 이용한 템플릿 기반의 화면구성, 그리고 스 book.naver.com 2021/10/24 ~ 2021/11/19 1) 책의 표지 2) 단원별 구성 3) 읽은 소감 우선 저의 글의 앞부분만 보는 분들을 위해 먼저 간단히 3가지에 대해 답해보겠습니다. Q 이 책을 읽기 전에 필요한 수준/ 지식은? => 일단 당연하게 JAVA는 알아야 한다. 그 외로 약간의 스프링 기본 내용을 알고 있어야 한다. .. Life/Book Record 2022. 2. 2. [Spring] 스프링 컨테이너와 스프링 빈 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 컨테이너 생성 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 컨테이너가 생성되는 과정과 코드를 살펴보자! 다음 코드를 먼저 살펴보자. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 애노테이션 기반의 구성 정보를 담고 있는 AppConfig.class가 있다. 이를 사용하여 스프링 컨테이너를 생성할 수 있다. 위의 ApplicationContext는 인터페이스에 해당한다. 따라서 이를 구현한 여러 구현체.. BackEnd/Spring 2022. 2. 1. [Spring] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 새로운 할인 정책 개발 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 우리의 기획자님 께서 기존에 1000원 씩 할인해주던 정책에서 10%를 할인해주는 정책으로 갑자기 바꾸고 싶다고 한다... 이에 대응한 정률할인정책 을 추가해보자. 구현체를 하나 새로 만들었다! package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy{ priv.. BackEnd/Spring 2022. 2. 1. [Spring] 스프링 핵심 원리 이해1 - 예제 만들기 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 이번시간에는 Spring이 왜 나왔는지 를 이해하기 위해하는 단원으로 잘못된 코드로부터 시작하여 점점 유지 보수가 편한 코드로 바뀌어가는 과정을 확인하는 시간 이였다. 블로그에는 일부 코드들은 생략하여 올리지 않았습니다. 1. 회원 도메인 설계 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 먼저 회원 클래스를 통하여 설계할 구조를 파악하였다. 서비스 인터페이스를 구현한 impl 과 MemberRepository 인터페이스를 만든다. 구현체는 언제든 변경 가능하다. 다만 class 다이어그램만으로는 runtime때 동적으로 설정되는 관계를 알기 어.. BackEnd/Spring 2022. 1. 31. [Spring] SOLID 원칙 (좋은 객체지향 설계의 5가지) 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. SOLID 원칙 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 SRP : 단일 책임 원칙 OCP : 개방 폐쇄 원칙 LSP : 리스코프 치환 원칙 ISP : 인터페이스 분리 원칙 DIP : 의존관계 역전 원칙 SRP (Single Responsibility Principle) " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 단일 책임 원칙이라 부른다. 한 클래스는 하나의 책임만을 가져야 한다. 하지만 하나의 책임이라는 것이 좀 모호하다. 책임이라는게 클 수도 있고, 작을 수도 있기 때문이다. 예를들어 자동차를 생각.. BackEnd/Spring 2022. 1. 31. 이전 1 2 3 다음