일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- intelij spring config
- API
- 오블완
- 커밋 되돌리기
- compgen
- m:n
- DTO
- 티스토리챌린지
- allocationSize
- 메모리 구조
- BindingResult
- 런타임 상수
- 쉘 스크립트
- application layer
- 프로그래머스
- @Autowired
- 쿠키
- mysql
- 컴파일 타임 상수
- JDBC
- JPA
- Git
- 기본키 전략
- 리눅스
- 백준
- 파이썬
- 편향된 지수
- spring
- @SubscribeMapping
- 알고리즘
- Today
- Total
목록SPRING/spring 기본 (5)
둘셋 개발!
빈 생명주기 콜백을 해야하는 이유 데이터 커넥션 풀이나 네트워크 소캣처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 스프링 빈은 객체를 생성하고 의존관계 주입이 다 끝난 다음에야, 초기화 작업 준비가 완료된다! 그리고 스프링은 스프링 컨테이너가 종료되기 전에 소멸 콜백을 준다! ✔️스프링 빈의 라이프 사이클 스프링 컨테이너 생성 -> 스프링 생성 -> 의존관계 주입 -> 초기화 콜백 -> 애플리케이션 동작 -> 소멸 전 콜백 -> 스프링 종료 🧐스프링 빈의 객체 생성 시점에 의존관계주입과 초기화 작업을 한꺼번에 하면 안되나??? -> 객체의 생성과 초기화는 분리하는 것이 좋다. 초기화는 외부..
의존관계 주입은 4가지 방법이 있다. 1. 생성자 주입 2. 수성자 주입 (setter) 3. 필드 주입 4. 일반 메서드 주입 결론적으로 말하자면 생성자 주입을 쓰는 것이 바람직하다! 생성자 주입을 해야하는 이유 1. 의존관계는 불변해야 함 : 대부분 의존관계 주입은 한 번 일어나면 종료시 까지 변하지 않는다. 따라서 생성자는 딱 1번만 호출되기 때문에 생성자 주입이 알맞다 2. 의존관계 주입을 누락할 일이 없음 : 생성자 주입을 사용하면 주입 데이터가 누락 시 컴파일 오류가 발생한다. 3. final 사용 가능 : 필드에 final키워드를 사용하게 되면 생성자에서 그 필드를 초기화 시켜주어야만 컴파일 오류가 발생하지 않는다. 따라서 오류를 컴파일 시험에 막아준다. 생성자 주입을 한 모습 @Compon..

스프링 빈을 등록할 때 @Bean을 일일이 붙여주었다. 하나하나 붙여주어야 하기 때문에 귀찮기도 하고 누락되는 경우도 생긴다. 그래서 스프링에서는 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 그리고 의존관계를 자동으로 주입하는 @Autowired이라는 기능도 제공한다. 컴포넌트 스캔 적용 방법 1. @ComponetnScan을 설정 정보에 붙여준다. @Configuration @ComponentScan public class AutoAppConfig { } 2. 스프링 빈으로 등록할 클래스에 @Component 애노테이션을 붙여주고 의존관계 주입은 생성자에 @Autowired를 붙여준다. 예시) @Component public class MemberService..

우선 싱글톤 컨테이너를 알아보기 전에 싱글톤이 무엇인지 살펴보자 싱글톤 패턴 : 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다 순수한 DI컨테이너의 경우 요청을 할 때마다 객체를 생성하기 때문에 메모리 낭비가 발생하는 등의 문제가 발생한다. 다음은 싱글톤 패턴을 쓴 예시코드이다. public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스터스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다. public static SingletonServ..