DI
-
5장) 5.3 서비스 추상화와 단일 책임 원칙 ~ 5.5 정리Java & Spring/토비의 스프링 3.1 2021. 7. 2. 14:11
5장 서비스 추상화 5.3 서비스 추상화와 단일 책임 원칙 수직, 수평 계층구조와 의존관계 기술과 서비스에 대해 추상화 기법 적용 UserDao와 UserService가 각각 담당하는 코드의 기능적인 관심에 따라 분리, 독자적으로 확장이 가능하도록 작업 같은 계층에서 수평적인 분리 트랜잭션 추상화 비즈니스 로직과 그 하위에서 동작하는 로우레벨의 트랜잭션 기술이라는 아예 다른 계층의 특성을 갖는 코드를 분리 단일 책임 원칙 하나의 모듈은 한가지 책임을 가져야함 == 하나의 모듈이 바뀌는 이유는 한 가지여야함 UserService 예시 JDBC Connection 메소드를 직접 사용하는 트랜잭션 코드가 있던 경우 두 가지의 책임을 가짐 사용자 레벨을 어떻게 관리할 것인가 트랜잭션을 어떻게 관리할 것인가 단일..
-
2.4 스프링 테스트 적용 ~ 2.6 정리Java & Spring/토비의 스프링 3.1 2021. 6. 3. 14:32
2장 테스트 2.4 스프링 테스트 적용 앞서 작성한 테스트 코드에서 @Before(Junit5는 BeforeEach)로 인해 Application Context가 테스트 메소드 개수만큼 생성되는 문제점이 존재 Application Context 생성에는 많은 시간과 자원이 소모 테스트 전체가 공유하는 오브젝트로 수정 빈은 싱글톤으로 만들었기 때문에 무상태성 UserDao 빈을 가져다 메소드를 사용한다고 해서 상태가 바뀌지 않음 @Before(Junit5 -> @BeforeEach)를 @BeforeClass(Junit5 -> @BeforeAll)로 수정 테스트 클래스 전체에 걸쳐 딱 한번만 실행 테스트를 위한 Application Context 관리 Junit을 이용하는 테스트 컨텍스트 프레임워크를 제공 ..
-
Spring IoC/DIJava & Spring/기본 개념 정리 2021. 1. 30. 00:11
Spring IoC/DI 컨테이너 컨테이너 인스턴스의 생명주기를 관리 생성된 인스턴스에게 추가 기능을 제공 ex ) WAS의 Servlet 컨테이너 IoC(Inversion of Control) 제어의 역전 컨테이너가 개발자(코드) 대신 오브젝트의 제어권을 가지고 있어서 제어의 역전이라함 ex) 서블릿 클래스는 개발자가 만들지만, 서블릿을 메소드에 맞게 호출하는 것은 WAS DI(Dependency Injection) 의존성 주입 클래스 사이의 의존 관계를 Bean 설정 정보를 바탕으로 컨테이너가 자동으로 연결 어노테이션을 통해 사용 코드 예시 // 미적용 사례 class 엔진 { } class 자동차 { 엔진 v5 = new 엔진(); } // 적용 사례 @Component class 엔진 { } @C..