Spring

1. Spring Boot 프로젝트에 Redis 셋팅 추가하기Redis 의존성 추가하기build.gradle에 아래 코드를 추가하고 gradle 새로고침 버튼을 눌러야 갱신한 의존성이 반영된다.dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-data-redis'} application.yml 수정하기# local 환경spring: profiles: default: local datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: password driver-class-name: com.mysql.cj..
스프링이 제공하는 빈이 존재할 수 있는 범위에 대한 섹션! 1. 빈 스코프란?빈 스코프는 빈이 존재할 수 있는 범위를 말함스프링 빈은 기본적으로 싱글톤 스코프로 생성되기 때문에 스프링 컨테이너의 시작과 함께 생성돼서 스프링 컨테이너가 종료될 때까지 유지됨아래와 같이 지정할 수 있음// 컴포넌트 스캔 자동 등록@Scope("prototype")@Componentpublic class HelloBean() {}// 수동 등록@Scope("prototype")@BeanPrototypeBean HelloBean() { return new HelloBean();} 스프링이 지원하는 다양한 스코프a. 싱글톤 스코프(default)기본값으로, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 b. ..
스프링을 통해 객체의 초기화 작업과 종료 작업을 어떻게 진행하는지 알아보는 섹션! 1. 빈 생명주기 콜백스프링 빈의 라이프사이클a. 객체 생성 → 의존관계 주입스프링 빈은 객체를 생성하고 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 준비가 됨Q. 객체 초기화 작업은 의존관계 주입이 모두 끝난 다음에 호출해야 하는데, 개발자가 의존관계 주입이 모두 끝난 시점을 확인할 수 있을까?A. 스프링은 의존관계 주입이 모두 끝나면 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공하고, 스프링 컨테이너가 종료되기 직전 소멸 콜백을 통해 안전하게 종료 작업을 진행할 수 있도록 함 b. 스프링 빈의 이벤트 라이프사이클스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기..
1. 의존관계 주입 방법생성자 주입생성자를 통해 의존관계를 주입 받는 방법@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired // 생성자가 1개이므로 생략해도 자동 주입 가능 public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; ..
1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기자바 코드의 @Bean이나 XML의 등을 통해 설정 정보에 직접 등록할 스프링 빈을 나열하는 방식의 문제점등록할 빈의 개수가 많아지면 일일이 등록하기 귀찮고, 설정 정보가 커지며, 누락되는 문제가 발생할 수 있음' 이 문제를 해결하기 위해 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 동록하는 기능(= 컴포넌트 스캔)과 의존관계 자동으로 주입하는 기능(@Autowired 사용)을 제공함@Configuration@ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class))public class AutoAppConfig { }설정 정보에..
1. 웹 애플리케이션과 싱글톤 패턴스프링이 없는 순수한 DI 컨테이너는 호출(요청)할 때마다 새로운 객체를 생성함이런 방식을 사용하게 되면 요청 수만큼 객체가 생성되고 소멸되므로 메모리 낭비가 심해짐해결 방안 = 싱글톤 패턴: 해당 객체가 딱 1개만 생성되고, 새로운 요청이 들어오면 해당 객체를 공유하도록 설계하기  싱글톤 패턴클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴객체 인스턴스가 2개 이상 생성되지 못하도록 private 생성자를 사용해, 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 함아래는 객체를 미리 생성해 두는 가장 단순하고 안전한 싱글톤 패턴 구현 방식객체가 필요하다면 getInstance() 메서드를 통해 조회 가능 (항상 같은 인스턴스를 반환함)priva..
스프링 컨테이너의 생성과 스프링 빈이 등록되는 과정을 설명한 섹션!스프링 빈이 등록되는 이름에 대한 개념을 잘 기억해야 함 1. 스프링 컨테이너 생성생성 코드// 스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);ApplicationContext = 스프링 컨테이너 = interfaceBeanFactory와 ApplicationContext로 구분해서 말하지만, BeanFactory를 직접 사용하는 경우는 거의 없음스프링 컨테이너는 XML을 기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있음위의 코드는 어노테이션 기반의 자바 설정 클래스로 ..
전체 내용 정리보단 나중에 다시 찾아 볼만한 내용들만 정리해보려고 한다. 1. 예제 만들기프로젝트 생성스프링 부트 3.0 이상 선택JDK 17 이상 사용javax 패키지 -> jakarta 패키지 (옛날 자료를 찾아보다 보면 javax로 되어있는 경우가  많음) 스프링 부트 3.2부터 [file > settings]에서 gradle 검색 후 [Build and run using]과 [Run tests using]에 Gradle 옵션 사용기본값이므로 수정할 필요 없음 로직 테스트예시package hello.core.member;import org.assertj.core.api.Assertions;import org.junit.jupiter.api.Test;import static org.junit.jupi..
1. 객체 지향이란?OOP(Object-Oriented Programming): 객체 지향 프로그래밍컴퓨터 프로그램을 '명령어의 목록'으로 보기 보단, 여러 개의 독립된 단위인 '객체'들의 모임으로 파악하고자 하는 것프로그램에 변화가 생기면 '객체'를 갈아끼우면 되기 때문에 프로그램이 유연하고 변경하기 쉬움주로 대규모 소프트웨어 개발에 많이 사용됨 각 개체는 서로 메시지를 주고 받으며 데이터를 처리하는 방식으로 협력함요청하는 객체는 클라이언트, 응답하는 객체는 서버로 볼 수 있음혼자 있는 객체는 없으며, 이 수 많은 클라이언트와 서버 객체들은 서로 협력 관계를 가짐서버인 객체가 클라이언트가 될 수도 있음 절차 지향 프로그래밍은 데이터 위에서 동작하는 함수를 작성하는 데에 집중하는 반면, 객체 지향 프로그..
dev-meung
'Spring' 태그의 글 목록 (5 Page)