핵심기술 스프링 DI 컨테이너 , AOP , 이벤트 , 기타웹 기술 스프링 MVC , 스프링 WebFlux데이터 접근 기술 트랜잭션 , JDBC , ORM 지원 , XML 지원기술 통합 캐시 , 이메일 , 원격접근 , 스케줄링테스트 스프링 기반 테스트 지원언어 코틀린
객체지향 프로그래밍 객체들의 모임 , 객체는 메시지를 주고받고, 데이터를 처리하수 있다.(협력) 프로그램을 유연하고 변경이 용이하다. 유
클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리
스프링은 다음 기술로 다형성 + OCP , DIP를 가능하게 지원DI :의존관계 , 의존성 주입DI 컨테이너 제공클라이언트 코드의 변경 없이 기능 확장쉽게 부품을 교체하듯이 개발정리모든 설계에 역할과 구현을 분리하자자동차 , 공연의 예애플리케이션 설계도 공연을 설계하듯
Spring 프로젝트 starter Gradle - Groovy Project 선택 스프링 부트 가장 안정화된 최신 버전 선택 SNAPSHOT , M2 = 정식 release가 된게 아님 Dependencies 추가를 하지않는 경우는 Core쪽 라이브러리 기
회원 도메인 실행과 테스트 @Test // given ~주어졌을때 생성자 선언 // when ~ 했을때 값을 할당해준다 // then ~ 이렇게 된다 Assertions . assertThat() . isequa
OCP와 DIP의 원칙을 지키는 방법 추상객체와 구현객체를 "동시에" 의존하게 하지 않으려면 -> "구현 객체를 생성하고" "연결"하는 책임을 가진 별도의 설정 클래스를 만들면된다. ("관심사의 분리") ex) public 인터페이스명 (){ return new 구현
한 클래스는 하나의 책임만 가져야 한다.관심사를 분리하고, App"Config" 라는 클래스를 통해 구현객체를 담당추상화에 의존해야지 구체객체에 의존하면 안된다. (생성자 주입을 통해 해결)사용 영역과 구성 영역으로 나눔다형성을 사용하고 DIP를 지킴AppConfig에
의존 관계 주입(DI) 정적인 클래스 의존관계 클래스가 사용하는 import 코드만 보고 의존관계를 쉽게 판단할 수있다. 하지만 이런 클래스 의존관계 만으로는 "실제" 어떤 객체가 주입될지 알수 없다. 동적인 객체 인스턴스 의존관계 애플리케이션 실행시점에
스프링으로 전환하기 @Configuration이란 : 설정(구성) 정보 @Bean : 스프링 컨테이너에 등록이 된다. ApplicationContext("스프링 컨테이너") : @Bean으로 스프링 컨테이너에 등록된거를 전체 관리해준다. applic
스프링 빈 조회시 같은 타입이 둘 이상 있으면, 중복 오류가 발생 빈 이름을 지정하여 조회 하면 된다. 스프링 빈 조회 - 상속관계 부모 타입으로 조회하면 , 자식 타입도 함께 조회한다 그래서 모든 자바 객체의 최고 부모인 Object 타입으로 조회하면, 모든 스
다양한 설정 형식 지원 -자바코드, XML resources 파일의 xml 파일을 만들어 bean을 등록해준다 xml 파일은 new GenericXmlApplicationContext() 사용 applicationContext() 사용 방법과 동일 스프링 빈 설정 메
스프링이 없는 DI 컨테이너 조회(호출) 할때마다 객체를 생성 트래픽이 100이 나오면 초당 100개 객체가 생성되고 소멸 -> 메모리 낭비가 심함 해결 : 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면된다 -> 싱글톤 패턴 싱글톤 패턴 same : 대
스프링 핵심원리 컴포넌트 스캔과 의존관계 자동 주입 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 "컴포넌트 스캔"이라는 기능을 제공 ( @ComponentScan ) 의존관계도 자동으로 주입하는 "@Autowired"라는 기능도 제공한다
다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있다. ( 당연한 소리지만, 스프링 빈으로 등록된 클래스여야 가능 ) 생성자 주입 (제일 자주 쓰임) 생성자를 통해서 의존 관계를 주입 받는 방법 @Autowired, "불변" "필수" 의
어노테이션 직접 만들기 @Qulifier 이라는 어노테이션 클래스를 직접 만들어 사용할수있다. 사용하는 방법은 Qulifier 사용하는 방법이랑 비슷하다. 단점으로는 기능을 뚜렷한 목적없이 무분별하게 재정의 하는것은 유지보수에 더 혼란만 가중할수 있다. 조
빈 생명주기 콜백 객체의 초기화와 종료 작업이 필요하다. 스프링 빈은 간단하게 라이프 사이클을 가진다 "객체 생성 -> 의존관계 주입" 스프링 컨테이너 생성 - > 스프링 빈 생성 -> "의존관계 주입" -> 초기화 콜백 -> "사용" -> 소멸전 콜백
빈 스코프란 ? > 스프링은 다음과 같은 다양한 스코프를 지원한다. "싱글톤" : 기본스코프, 가장 넓은 범위의 스코프 "프로토 타입" : 매우 짧은 범위의 스코프 "웹 관련 스코프" "request" : 웹 요청이 들어오고 나갈때 까지 유지 "s
웹 스코프 웹 환경에서만 동작한다. 웹 스코프는 프로토 타입과 다르게 종료 메소드가 호출된다. 웹 스코프 종류 1. request : http 요청 "하나"가 들어오고 나갈떄 까지 유지되는 스코프, 요청마다 별도의 빈 인스턴스가 생성 관리된다. 2.