
DI는 Dependency Injection 의존관계 주입이라고 한다. 이를 이해하기 위해서 먼저 의존관계라는 것을 알아보자. 의존관계는 정적인 클래스 의존관계 / 실행 시점에 결정되는 동적인 객체(인스턴스) 의존관계로 분리할 수 있다. 정적인 클래스 의존관계는 import 코드만 보고 쉽게 판단할 수 있는 것이다. 정적인 의존관계는 어플리케이션을 실행하지 않고도 알 수 있다. 예를 들어, 위 코드에서 import 부분을 보면 DiscountPolicy, Member, MemberRepository가 사용된다는 것을 알 수 있다. 여기에서의 의존관계는 인텔리제이 다이어그램으로도 확인할 수 있다. 이제 실행 시점에 결정되는 동적인 객체 의존관계를 확인해 보자. 현재 위 코드만 봐서는 OrderService..

이전까지 내가 프로그래밍을 하던 방식은 코드를 짜다가 필요한 객체가 있으면 생성해서 쓰고, 또 생성해서 쓰고 이런식으로 진행하였다.즉 구현 객체가 프로그램의 제어 흐름을 스스로 통제하고 제어하는 것이었다. 이렇게 내가 제어하고 컨트롤하는 스타일로 개발을 하였는데 IoC, 즉 제어의 역전은 내가 뭔가를 호출하는 것이 아니라 프레임워크 같은 것이 대신 호출해 주는 것이다. 아래와 같은 코드들이 있다고 해 보자. 일단 OrderServiceImpl이라는 코드만 보았을 때 알 수 있는 것은 "이건 일단 orderService라는 인터페이스 구현체이네?" "그리고 memberRepository랑 discountPolicy를 뭐 가져오는갑다" "이거 생성하려면 memberRepository랑 discountPoli..
왜 싱글톤 패턴을 사용해야 하는가. 스프링은 기본적으로 기업용 온라인 서비스를 지원하기 위해 만들어졌다. 이런 웹 어플리케이션은 보통 여러 고객들이 동시에 요청을 하게 될 것이다. 이런 상황에서 내가 그냥 순수한 DI 컨테이너를 사용하게 된다면 고객들이 요청을 할때마다, 즉 호출할 때 마다 새로운 객체를 생성하게 될 것이다. 만일 초당 5만 건 정도의 요청이 동시에 들어오게 된다고 하면 그만큼의 객체를 생성하게 되는 것이다. 이것은 메모리 낭비가 너무 심한 일이다. 하기 테스트코드를 통해서 요청이 들어올 때 마다 새로운 객체가 생성되는 것을 확인할 수 있다. public class SingletoneTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureCo..
@Entity 기본 생성자는 필수로 있어야 함! -> jpa 규정이라고 함. 저장할 필드에 final사용할 수 없음 jpa를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수 final클래스, enum, interface, inner(중첩클래스) 클래스는 @Entity를 사용할 수 없음 @Entity 속성 예시) @Entity(name="Member") jpa가 내부적으로 구분하는 이름으로, 설정을 따로 안하면 기본값으로 클래스 이름을 그대로 사용한다. 클래스 이름이 겹치거나 하는 게 아니면 바꾸지 말자. @Table 엔티티와 매핑할 테이블 지정 name 속성 생략하면 클래스 이름 그대로 사용 실제 사용 Entity에 해당되는 파일에 @Entity와 @Table을 사용할 수 있음. 일단 @Entit..
@Enumerated 어노테이션은 엔티티 클래스 속성 중 Enum 타입의 변수에 사용할 수 있다. EnumType.STRING vs EnumType.ORDINAL EnumType.STRING : 각 Enum 이름을 컬럼에 저장한다. ex) G, PG, PG13.. EnumType.ORDINAL : 각 Enum에 대응되는 순서를 칼럼에 저장한다. ex) 0, 1, 2.. 참고 https://tomee.apache.org/examples-trunk/jpa-enumerated/ JPA and Enums via @Enumerated Any help with the documentation is greatly appreciated. All edits are reviewed before going live, so ..
- Total
- Today
- Yesterday
- jmeter로그인
- jmeter부하테스트
- 자바
- jmeter토큰
- EC2
- 부하테스트시나리오
- jwt
- Lock
- 대규모더미데이터
- 항해
- jmeter시나리오
- CorrectnessAndTheLoopInvariant
- CheckedException
- jmeter쿠키
- 동적크롤링
- Spring
- jmeter테스트
- hackerrank
- Redisson
- bankersRounding
- 프로그래머스
- 스프링faker
- Redis
- 토큰
- 인덱스
- jmeter세션
- index
- Python
- Java
- pessimisticlock
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |