본문 바로가기
반응형

Spring26

[MVC] MVC1, MVC2 차이점 MVC1MVC2하나의 component가 request를 받고 response를 보내는 책임을 가집니다.response를 받고 보내는 여러 개의 컴포넌트가 있습니다.presentation logic, business logic이 같이 있습니다.presentatin logic을 business logic으로부터 분리합니다.presentation logic, business logic이 결합되어 있어서 web designer와 web developer가 함께 일을 하기 어렵습니다.logic이 분리되어있어서 designer와 developer가 일을 함께 할 수 있습니다.application component의 재사용을 지지하지 않습니다.component의 재사용이 가능합니다.JSP에 controller와 m.. 2024. 5. 7.
[Spring] 스프링 핵심 원리 - 기본편 > 섹션 8. 빈 생명주기 콜백 인프런 김영한 강사님의 [스프링 핵심 원리 - 기본편] 섹션8. 빈 생명주기 콜백에 대한 요점 정리를 하였다. 목차 1.스프링 빈 이벤트 라이프 사이클 2.빈 생명주기 콜백 3가지 방법 1.스프링 빈 이벤트 라이프 사이클 스프링 빈의 이벤트 라이프 사이클은 다음과 같다. 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 데이터베이스 커넥션 풀이나, 네트워크 소켓의 경우, 애플리케이션 시작 시점에 필요한 연결을 하고 애플리케이션 종료 시점에 종료하는 작업이 필요하다. 이를 위해 객체의 초기화와 종료 작업인 빈 생명주기 콜백 3가지에 대해 알아보려한다. 2.빈 생명주기 콜백 3가지 방법 2-1. 인터페이스 InitializingBe.. 2024. 4. 12.
[Spring] 스프링 핵심 원리 - 기본편 > 섹션 7. 의존관계 자동 주입 인프런 김영한 강사님의 [스프링 핵심 원리 - 기본편] 섹션7. 의존관계 자동 주입에 대한 요점 정리를 하였다. 목차 1.의존관계 주입방법 2.조회 빈이 2개 이상일 경우 3.어노테이션 직접 만들기 1.의존관계 주입방법 의존관계 주입 방법에는 크게 4가지가 있다. 1. 생성자 주입 2. 수정자 주입(setter 주입) 3. 필드 주입 4. 일반 메서드 주입 이 중에서 생성자 주입을 기본으로 사용하자. 대부분의 의존관계 주입은 변하면 안되기 때문이다. 수정자 주입 방식은 다른 필드 값들도 주입해주어야 하므로 누락의 가능성이 있다. 필드 주입은 테스트하기 어렵고 @Configuration 같은 특별한 용도에서만 사용한다. 일반 메서드 주입은 한번에 여러 필드를 주입 받을 수 있지만 잘 사용하지 않는다. @C.. 2024. 4. 11.
[Spring] 스프링 핵심 원리 - 기본편 > 섹션 6. 컴포넌트 스캔 인프런 김영한 강사님의 [스프링 핵심 원리 - 기본편] > 섹션6. 컴포넌트 스캔에 대한 요점 정리를 하였다. 메서드에 @Bean 적용을 해야 하는 경우가 너무 많아질 경우가 있다. @Bean 적용 없이 동일하게 스프링 빈으로 등록하고 싶을 경우, 클래스에 @Component를 적용하고 DI를 위해서 생성자에 @Autowired를 적용한다. 그리고 @ComponentScan을 적용한 클래스를 만들면 된다. @ComponentScan은 이름 그대로 @Component 어노테이션을 적용한 클래스를 스캔해서 스프링 빈으로 등록한다. @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Conf.. 2024. 4. 11.
[Spring] 스프링 핵심 원리 - 기본편 > 섹션 5. 싱글톤 컨테이너 인프런 김영한 강사님의 [스프링 핵심 원리 - 기본편] > 섹션5. 싱글톤 컨테이너에 대한 요점 정리를 하였다. public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } ... } 스프링이 없이 순수한 DI 컨테이너인 AppConfig는 클라이언트가 memberServiceImpl을 요청할 때 마다 새로운 memberServiceImpl을 생성하고 반환한다.(-> 메모리 낭비 발생) 이유는 스프링이 없는 순수한 DI 컨테이너는 싱글톤을 보장해주지 않기 때문이다. 객체를 1개만 생성하고 공유하도록 설계하는 스프링 컨테이너를 사용하자. 스프링 컨테이너는 객체 .. 2024. 4. 10.
[Spring] 스프링 핵심 원리 - 기본편 > 섹션3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 인프런 김영한 강사님의 [스프링 핵심 원리 - 기본편] 섹션3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용에 대한 요점 정리, 강의 외 추가 코드 작성을 하였다. 고객이 제품을 주문하고 할인을 받는 내용이다. 할인 정책 요구사항 변경이 생겼다. 기존 고정 할인에서 정률(%) 할인으로 변경 요구사항이다. 이 요구사항은 다시 고정 할인으로 되돌릴 수도 있다. 할인에 대해 명세가 확정되지 않았다는 것이다. 이러한 상황에서 어떻게 객체 지향적으로 다형성, OCP, DIP를 만족시킬 수 있을지를 중점적으로 볼 것이다. 주문 생성시 제품에 할인을 적용하는데 할인이 바뀔 수 있게 구현해야한다. DiscountPolicy 인터페이스를 만들고 구체 클래스인 FixDiscountPolicy(고정 할인), RateD.. 2024. 4. 8.
@NoArgsConstructor(access = AccessLevel.PROTECTED) 쓰는 이유 엔터티 혹은 DTO 작성시 @NoArgsConstructor(access = AccessLevel.PROTECTED) 어노테이션을 많이 사용한다. @NoArgsConstructor에 AccessLevel설정으로 AccessLevel.PUBLIC, AccessLevel.PRIVATE, AccessLevel.PROTECTED가 있다. 왜 @NoArgsConstructor(access = AccessLevel.PROTECTED)를 많이 쓰는 것일까? 문제점부터 알아보자. 문제점 @NoArgsConstructor(access = AccessLevel.PUBLIC): 1. 기본 생성자를 사용하는 방식을 여러 곳에서 생성이 가능하다.(BAD) 2. 객체 데이터에 빈값이 들어가는 일관성에 문제가 생길 수 있다. @N.. 2023. 10. 11.
parser() is deprecated 해결방법 JWT를 이용한 메서드 작성중에 'parser() is deprecated'라는 더이상 사용하지 않는다고 나온다. 그리고 고치는 방법을 친절하게 알려주고 있다. parser() 대신 parserBuilder()를 쓰고 build()를 붙이라고 한다. 문제해결! 2023. 9. 9.

반응형
반응형