일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- golang
- Gradle
- GitHub
- Python
- 스프링
- 티스토리챌린지
- Codeup
- go
- JPA
- MySQL
- Git
- Spring Boot
- 오블완
- java
- 객사오
- 알고리즘
- spring security
- 클린 코드
- Postman
- 파이썬
- H2 설치
- 코드업
- springboot
- mariadb
- thymeleaf
- Vue.js
- 기초100제
- 롬복
- 클린코드
- Spring
- Today
- Total
목록분류 전체보기 (85)
nyximos.log
🤔 빈 스코프란? 빈이 존재할 수 있는 범위 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 : 프로토타입 빈의 생성+의존관계 주입까지만 관여하는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. application : 웹 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다. 빈 스코프 지정방식 1. 컴포넌트 스캔 자동 등록 @Scope("prototype") @Component public class HelloBean{} 2. 수동 등록 @Scope("prototype") @Bean PrototypeBe..
👶 빈 생명주기 콜백 시작 객체의 초기화와 종료 작업 필요 데이터베이스 커넥션 풀, 네트워크 소켓처럼 애플리케이션 시작시점에 필요한 연결 미리해둠 애플리케이션 종료 시점에 연결 모두 종료 스프링 빈의 라이프 사이클 객체 생성 → 의존관계 주입 (데이터 사용할 수 있는 준비 완료) 개발자는 의존관계 주입이 완료된 시점에 초기화 작업을 호출해야 한다. 스프링은 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려주고과 종료 직전 소멸 콜백을 준다! 스프링 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸전 콜백 → 스프링 종료 📌 초기화 콜백 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출 📌소멸전 콜백 빈이 소멸되기 직전에 호출 스..
👩🚀 목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법 익히기 👩💻 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 🦸♀️ Primitive Type 종류와 값의 범위 그리고 기본 값 primitive type 기본형 타입 값을 할당할 때 변수의 주소값에 값이 그대로 저장되고, JVM Runtime Area의 Stack Area에 저장된다. type size default value range 논리형 boolean 1byte flase true,false 정수형 byte 1byte 0 -1..
🤹♂️ 다양한 의존관계 주입 방법 의존관계 주입은 4가지 방법이 있다. 생성자 주입 수정자 주입 (setter 주입) 필드 주입 일반 메서드 주입 1. 생성자 주입 이름 그대로 생성자를 통해 의존관계 주입 생성자 호출시점에 한번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용된다. 😮☝ 생성자가 딱 1개 있으면 @Autowired를 생략해도 자동 주입 된다. (스프링 빈에만 해당) 2. 수정자 주입(setter 주입) 필드 값을 변경하는 수정자 메서드를 통해 의존관계 주입 선택, 변경 가능성이 있는 의존관계에 사용된다. 자바빈 프로퍼티 규약의 수정자 메서드를 사용하는 방법이다. 📌 자바빈 JavaBean JavaBeans Convention에 따라 작성된 자바 클래스🙆♀️ 컴포넌트 🙅♀️ 📌..
웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. DI 컨테이너를 요청할때마다 객체를 새로 생성하게 되니 메모리 낭비가 심하다. DI 컨테이너를 하나만 생성후 공유하도록 설계하면 메모리를 아낄 수 있다. 🕸 싱글톤 패턴 클래스의 인스턴스가 하나만 생성되는 것을 보장하는 디자인 패턴 1. static 영역에 객체를 하나 생성하고 2. private를 이용해 객체 인스턴스가 필요하면 이 static 메서드를 통해 조회하도록 한다. → new 키워드로 객체 인스턴스가 생성되는 것을 막는다. 그러나 싱글톤 패턴도 문제점이 있다. 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다. 의존관계상 클라이언트가 구체 클래스에 의존한다. DIP를 위반한다. 클라이언트가 구체 클래스에 의존해서 OCP 원칙을 위반할 ..
자바코드의 @Bean이나 XML의 등을 통해 개발자가 직접 스프링 빈을 등록해야 했지만 이렇게 직접 등록할 때는 단점이 많다. 1. 귀찮다. 2. 설정 정보가 커진다. 3. 누락할 수도 있다. 🤹♀️ 그래서 스프링은 컴포넌트 스캔 기능을 제공한다. @ComponentScan 설정 정보에 붙이면 자동으로 스프링 빈을 등록한다. + @Configuration에도 @Component가 붙어있다. @Autowired 의존관계를 자동으로 주입한다. 생성자에서 여러 의존관계를 한꺼번에 주입받을 수도 있다. 컴포넌트 스캔과 자동 의존관계 주입 동작 순서 1. @ComponentScan : @Component가 붙은 모든 클래스를 스프링 빈으로 등록한다. 2. @Autowired 의존관계 자동 주입 : 스프링 컨테이..
@Configuration 설정을 구성한다는 뜻 스프링 설정 클래스를 선언한다. IoC Container에게 해당 클래스를 Bean 구성 Class 임을 알려준다. @Bean 스프링 컨테이너에 스프링 빈으로 등록 @Configuration을 안 붙여도 빈으로 등록이 가능하지만 싱글톤을 보장받지 못한다. 스프링 컨테이너 ApplicationContext를 스프링 컨테이너라 한다. XML이나 애노테이션 기반의 자바 설정 클래스로도 만들 수 있다. 객체 생성과 DI를 스프링 컨테이너를 통해 한다. @Configuration이 붙은 애를 설정(구성)정보로 사용한다. @Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. → 스프링 빈 이전에는 개발자가 필요한 객체를 직접 조회했지만..
🛸 제어의 역전 IoC Inversion of Control 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 기존 프로그램은 클라이언트 구현 객체가 제어 흐름을 스스로 조종했다. 제어의 역전이 일어나면 구현 객체는 자신의 로직을 실행하는 역할만 담당하게 된다. 💉 의존관계 주입 DI Dependency Injection 말그대로 객체를 직접 생성하는 것이 아니라 외부에서 생성해서 의존관계를 주입한다는 말이다. 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결 되는 것 객체 인스턴스를 생성하고 그 참조값을 전달해서 연결! 👩🔧 IoC 컨테이너 객체를 생성하고 관리하고..