본문 바로가기

스프링11

[Spring] 스프링 핵심 원리 - 기본편 (9) 이전 글 [Spring] 스프링 핵심 원리 - 기본편(8) 빈 스코프 빈 스코프란 스프링 빈은 싱글톤 스코프를 디폴트 값으로 생성 싱글톤 : 기본 스코프, 스프링 컨테이너 시작과 끝까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리 X 웹 관련 스코프 : - request : 웹 요청이 들어오고 나갈때까지 유지되는 스코프 - session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 - application : 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프 프로토타입 스코프 싱글톤 스코프 빈의 경우 조회시 항상 같은 인스턴스의 스프링 빈을 반환 프로토타입 스코프 빈의 경우 항상 새로운 인스턴스를 생성하여 반환 1. 프로토타입 스.. 2023. 4. 2.
[Spring] 스프링 핵심 원리 - 기본편 (8) 이전 글 [Spring] 스프링 핵심 원리 - 기본편(7) 빈 생명주기 콜백 빈 생명주기 콜백 시작 DB 커넥션 풀, 네트워크 소켓 등 애플리케이션 시작 시점에 필요 연결을 미리 해두고, 종료 시점에 연결을 종료를 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링 빈의 라이프 사이클 객체 생성 -> 의존관계 주입 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출 필요 스프링은 의존관계 주입이 완료되면 스프링 빈에 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능 제공 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 스프링 빈의 이벤트 라이프사이클 스프링 시작 -> 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 .. 2023. 3. 31.
[Spring] 스프링 핵심 원리 - 기본편 (7) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (6) 의존관계 자동 주입 다양한 의존관계 주입 방법 생성자 주입 - 생성자 호출시점에 1회 호출 보장 - 불변, 필수 의존관계에 사용 - @Autowired(생성자가 딱 하나만 있으면 @Autowired 생략해도 자동 주입 - spring bean인 경우) 수정자 주입 - setter에 Autowired 적용 - 선택(required=false), 변경 의존관계에 사용 필드 주입 - @Autowired private MemberRepository memberRepository; - 외부에서 변경 불가능 -> setter 만들어야함 - 안쓰는게 좋으나 @Configuration 혹은 테스트 과정 중에는 가능 일반 메서드 주입 - 일반 메서드를 통해 주.. 2023. 3. 23.
[Spring] 스프링 핵심 원리 - 기본편 (6) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (5) 컴포넌트 스캔 컴포넌트 스캔과 의존관계 자동 주입 시작하기 @ComponentScan을 붙여주면 컴포넌트 스캔 가능 @Configuration도 @Component가 붙기 때문에 자동 등록된다. excludeFilters를 이용하여 Annotation 타입이 Configuration인 것들을 제거한다. @Autowired를 사용하면 자동 매핑된다. -> default로 타입이 같은 빈을 주입한다. @Component 동작 과정 @Autowired 동작 과정 각 구현 클래스에 @Component, @Autowired annotation 추가 후 아래와 같은 Configuration 파일 작성시 동작 가능 import org.springframew.. 2023. 3. 7.
[Spring] 스프링 핵심 원리 - 기본편 (5) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (4) 싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링은 온라인 서비스 기술을 지원하기 위해 탄생 순수 DI 컨테이너는 AppConfig 요청마다 객체를 새로 생성한다. -> 해당 객체를 1개만 생성 후 공유하도록 설계한다. (싱글톤 패턴) import hello.core.AppConfig; import hello.core.member.MemberService; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; public class SingletonTest { @Test @DisplayName.. 2023. 3. 5.
[Spring] 스프링 핵심 원리 - 기본편 (4) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (3) 스프링 컨테이너와 스프링 빈 스프링 컨테이너 생성 ApplicationContext = 스프링 컨테이너, 인터페이스 스프링 컨테이너는 xml, 혹은 annotation 기반 자바 설정 클래스 AnnotationConfigApplicationContext는 ApplicationContext의 인터페이스 구현체 스프링 빈의 이름은 메소드 이름 사용, 직접 부여도 가능(유니크하도록) 빈 생성 후 의존 관계 주입 컨테이너에 등록된 모든 빈 조회 applicationContext에서 getBean을 사용하여 확인 BeanDefinition에서 역할별 bean 확인 가능 import hello.core.AppConfig; import org.junit.j.. 2023. 2. 11.
[Spring] 스프링 핵심 원리 - 기본편 (2) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (1) 스프링의 핵심 원리 이해1 - 예제 만들기 1. 프로젝트 생성 https://start.spring.io/ 에서 설정 후 spring boot 프로젝트 생성한다. 만들어진 프로젝트를 압축해제 후 Intellij에서 Import하여 확인한다. src/main/java/{group}/{Artifact}/{Artifate}Application을 run하여 정상 작동 여부를 확인한다. Intellij gradle 세팅 변경 2. 비즈니스 요구사항과 설계 3. 회원 도메인 설계 4. 회원 도메인 개발 Grade, Member - model public enum Grade { BASIC, VIP } public class Member { private L.. 2023. 1. 24.
[Spring] 스프링 핵심 원리 - 기본편 (1) 객체 지향설계와 스프링 1. 이야기 - 자바 진영의 추운 겨울과 스프링의 탄생 기존 EJB(Enterprise Java Beans) 사용 but 비싼 비용, 복잡하고 어려움, 느림 Spring -> EJB 컨테이너 대체, 단순함 Hibernate -> EJB 엔티티빈 기술 대체, JPA(Java Persistence API) 표준 정의 2. 스프링이란? 필수 : 스프링 프레임워크, 스프링 부트 선택 : 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 REST Docs, 스프링 배치, 스프링 클라우드 핵심 : 객체 지향 언어인 자바 언어 기반의 프레임워크 스프링 프레임워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술.. 2023. 1. 9.
[Spring][전문가를 위한 스프링 5] CH2. 스프링 시작하기 전문가를 위한 스프링 5(Pro Spring 5) - Ch 2. 스프링 시작하기 2.1 스프링 프레임워크 가져오기 Maven, Gradle 같은 빌드 도구를 사용 || Github에서 Spring Library Checkout 후 사용 사용하려는 Spring에 적절한 JDK 사용하기 JVM(Java Virtual Machine) : 구현이 필요한 abstract machine, 자바 바이트 코드가 실행될 수 있는 실행 환경 제공하는 사양 JRE(Java Runtime Environment) : 실행 환경을 제공하는데 사용, JVM의 실제 구현체 JDK(Java Development Kit) : JRE, 메뉴얼 및 자바 도구들을 담고 있는 것 JDK12 이상, Spring 5.1.8 사용 2.2 스프링 모.. 2022. 8. 15.
반응형