BackEnd/Spring51 [Spring] 빈 생명주기 콜백 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 빈 생명주기 콜백 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 개발자는 의존관계 주입이 모두 완료된 시점을 어떻게 알고 사용할까? 스프링은 의존관계 주입이 완료되면 스프링빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공한다! 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 통하여 clean up 과정을 갖도록 해준다. 싱글톤 스프링 빈의 라이프 사이클은 다음과 같다. 스프링컨테이너생성 => 스프링빈생성 => 의존관계주입 => 초기화콜백 => 사용 => 소멸전 콜백 => 스프링 종료 다만 위의 라이프 사이클은 sett.. BackEnd/Spring 2022. 2. 7. [Spring] 의존관계 자동 주입 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 옵션 처리 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간에는 옵션처리를 공부하였다. 이는 주입할 스프링 빈이 없을때도 동작하도록 하는 과정이였다. 기본적으로 @Autowired는 required = true 이기 때문에 자동 주입대상이 없으면 오류가 발생한다. 3가지 방식으로 처리가 가능했다. 1) @Autowired(required = false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안되는 방식 2) org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null이 입력된다. 3).. BackEnd/Spring 2022. 2. 5. [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. [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. [Spring] 스프링은 객체 컨테이너 공부하며 중요하다 싶은 내용들을 블로그에 공부겸 정리한 내용입니다! 지적 댓글 환영합니다~ 스프링은 객체 컨테이너 이다! " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링의 핵심 기능은 객체를 생성하고 초기화하는 것 이다. 이와 관련된 기능은 ApplicationContext라는 인터페이스에 정의되어 있다. AnnotationConfigApplicationContext 클래스는 이 인터페이스를 알맞게 구현한 클래스 중 하나다. AnnotationConfigApplicationContext 클래스는 자바 클래스에서 정보를 읽어와 객체 생성과 초기화를 수행하게 됩니다! XML, 그루비 설정코드를 사용하여 객체 생성/초기화를 하는 클래스도 존재합니다. 우선 다음 다이어그램.. BackEnd/Spring 2022. 1. 14. [Spring] AOP : Aspect Oriented Programming 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 섹션 7. AOP " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1. AOP가 필요한 상황 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 우리가 작성한 코드에 함수가 1000개 있다고 해보자. 문제는 갑자기 위에서 모든 함수들의 시간을 측정해보라는 명령이 내려왔다는 것 이다. AOP를 아직 모르는 사람은 함수 하나를 다음과 같이 변경하였다. public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicat.. BackEnd/Spring 2022. 1. 14. [Spring] 스프링 DB 접근 기술 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 섹션 6. 스프링 DB 접근 기술 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1, 2 단원의 JDBC 노가다 방식은 생략하였습니다. 저도 예전에 JDBC 써써 손수 다 해본적 있으니.. 정리는 생략하는걸로.. 1. 스프링 통합 테스트 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간에는 전체적인 Spring 코드를 테스트 하는 시간을 갖었다. 우선 코드를 살펴보자. package hello.hellospring.service; import hello.hellospring.domain.Member; imp.. BackEnd/Spring 2022. 1. 14. [Spring] 회원 관리 예제 - 웹 MVC 개발 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 섹션 5. 회원 관리 예제 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1. 회원 웹 기능 - 홈 화면 추가 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 컨트롤러 하나를 추가해 주었다. package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeControl.. BackEnd/Spring 2022. 1. 14. 이전 1 2 3 4 5 다음