Java & Spring
-
@SpyBean vs @MockBeanJava & Spring/기타 2021. 10. 11. 15:44
SpyBean vs MockBean SpringBoot 1.4 부터 추가된 Annotation SpyBean 클래스 레벨, @Configuration 클래스의 필드, @RunWith 클래스의 필드에 적용 가능 가능 같은 컨텍스트 안의 빈은 spy로 선언된 빈으로 래핑된다. Given에서 선언한 코드 외에 전부 실체 객체를 사용 @SpyBean private MyService myService; doReturn(myObject) .when(myService) .getMyObject(params..); myService의 getMyObject라는 메소드는 위에서 정한 parameter로 호출할 때, myObject라는 객체를 리턴해주도록 설정해준다. 이외의 모든 메소드, 필드 등은 실체 객체를 사용하게 된다..
-
ArcusJava & Spring/기타 2021. 9. 30. 15:23
Arcus 란? memcached와 ZooKeeper를 기반으로 네이버 서비스들의 요구 사항을 반영해 개발한 메모리 캐시 클라우드 memcached 프로토콜을 지원하고 기본 성능 혜택은 그대로 유지 백엔드 저장소인 DB 앞단에 위치하여 hot-spot 성격의 데이터를 캐싱하여, 서비스 응용에 빠른 응답성을 제공하고 DB 부하를 감소시킴 복잡한 계산에 의한 결과물 or 웹 처리 상의 중간 데이터 등을 신속하게 저장 / 조회 캐시를 통한 여러 프로세스들 간에 데이터 공유 Front Cache 리모트 캐시 앞단에서 애플리케이션 장비의 로컬 메모리를 사용하여 데이터를 캐싱하는 방법 ARCUS와 같이 리모트 서버에서 캐싱을 수행하면 캐싱된 데이터를 서로 공유할 수 있지만, 일시적인 많은 요청으로 인한 장비 리소스..
-
9장) 9.3 애플리케이션 아키텍처 (vol1 마지막 정리)Java & Spring/토비의 스프링 3.1 2021. 9. 24. 12:11
9장 스프링 프로젝트 시작하기 9.3 애플리케이션 아키텍처 스프링 웹 애플리케이션 아키텍처 결정하기 아키텍처 어떤 경계 안에 있는 내부 구성 요소들이 어떤 책임을 갖고, 어떤 방식으로 서로 관계를 맺고 동작하는지를 규정하는 것 동적인 행위와 관계 9.3.1 계층형 아키텍처 관심, 책임, 성격, 변하는 이유와 방식이 서로 다른 것들을 분리 응집도가 높아지고 결합도가 낮아짐 장점 불필요한 부분까지 변경이 일어나고 이로 인해 작업이 더뎌지고 오류가 발생할 가능성이 적어짐 어느 부분을 수정할지 파악하기 쉬워지고 변경이 필요한 부분만 각각 변경이 필요하고, 독립적인 발전이 가능 인터페이스와 같은 유연한 경계를 만들어두고 분리하거나 모아주는 작업이 필요 아키텍처와 SoC 지금까지는 성격이 다른 코드가 얽혀 있는 것..
-
8장) 8.3 POJO 프로그래밍 ~ 8.4 스프링의 기술Java & Spring/토비의 스프링 3.1 2021. 9. 7. 17:04
8장 스프링이란 무엇인가? 8.3 POJO 프로그래밍 스프링의 기술적 지향점 스프링의 정수는 엔터프라이즈 서비스 기능을 POJO에 제공하는 것 엔터프라이즈 서비스는 보안, 트랜잭션과 같은 엔터프라이즈 시스템에서 요구되는 기술 엔터프라이즈 서비스 기술과 POJO라는 애플리케이션 로직을 담은 코드를 분리했다는 뜻 8.3.1 스프링의 핵심: POJO 스프링의 핵심은 POJO 프로그래밍 스프링 애플리케이션은 두 가지로 구분 POJO를 이용해 만든 애플리케이션 코드 POJO가 어떻게 관계를 맺고 동작하는지 정의해놓은 설계정보 이런 DI 개념을 애플리케이션 전반에 걸쳐 적용하는 것이 스프링의 프로그래밍 모델 스프링의 주요 기술인 IoC/DI, AOP, PSA(Portable Service Abstraction)은 ..
-
8장) 8.1 스프링의 정의 ~ 8.2 스프링의 목적Java & Spring/토비의 스프링 3.1 2021. 9. 7. 17:02
8장 스프링이란 무엇인가? 8.1 스프링의 정의 스프링의 가장 대중적인 정의 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 애플리케이션 프레임워크 일반적인 라이브러리, 프레임워크 특정 업무 분야나 한 가지 기술에 특화된 목표를 가지고 만들어짐 ex) 웹 계층을 MVC로 쉽게 만듦, 포맷과 출력장치를 유연하게 변경할 수 있는 애플리케이션 로그 기능 제공, ORM 등 스프링 애플리케이션 프레임워크 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션 전 영역을 포괄하는 범용적인 프레임워크 자바 엔터프라이즈 개발의 이상적인 프로그래밍 모델을 추구하는 데 필요한 기반이 돼주는 코드, 즉 프레임워크가 지금 스프링의 원시버전 애플리케이션 전 영역을 관통하는 일관된 프로그래밍 모델과 핵..
-
7장) 7.6 스프링 3.1의 DIJava & Spring/토비의 스프링 3.1 2021. 8. 30. 13:42
7장 스프링 핵심 기술의 응용 7.6 스프링 3.1의 DI 자바 언어의 변화와 스프링 DI가 적용된 코드를 작성할 때 사용하는 핵심 도구인 자바 언어의 대표적인 두 가지 변화 애노테이션의 메타정보 활용 정책과 관례를 이용한 프로그래밍 애노테이션의 메타정보 활용 자바 코드의 메타정보를 이용한 프로그래밍 자바 코드의 일부를 리플렉션 API 등을 이용해 어떻게 만들었는지 보고 그에 따라 동작하는 기능이 점점 많이 사용됨 리플렉션 API 초기 버전부터 class, interface, field, method 등의 메타정보를 살펴보거나 조작하기 위해 사용 최근에는 자바 코드의 메타정보를 데이터로 활용하는 스타일의 프로그래밍 방식에 더 많이 활용 애노테이션이 정점 애노테이션 자바 코드가 실행되는 데 직접 참여 X ..
-
7장) 7.4 인터페이스 상속을 통한 안전한 기능확장 ~ 7.5 DI를 이용해 다양한 구현 방법 적용하기Java & Spring/토비의 스프링 3.1 2021. 8. 20. 14:09
7장 스프링 핵심 기술의 응용 7.4 인터페이스 상속을 통한 안전한 기능확장 애플리케이션을 새로 시작하지 않고 특정 SQL의 내용만을 변경하고 싶다면 어떻게 해야 할지 생각해보자 7.4.1 DI와 기능의 확장 지금까지 적용한 DI는 일종의 디자인 패턴 or 프로그래밍 모델이라는 관점에서 이해하는 것이 자연스러움 스프링과 같은 DI 프레임워크를 적용하고 빈 설정파일로 애플리케이션을 구성했다고 해서 DI를 바르게 활용하고 있다고 볼 수 없음 DI의 장점은 DI에 적합한 오브젝트 설계가 요구됨 DI를 의식하는 설계 다양한 기능 확장이 가능했던 이유 SqlService 내부 기능을 적절한 책임과 역할에 따라 분리 인터페이스 정의로 느슨하게 연결 DI를 통해 유연하게 의존관계를 지정 DI 덕분에 오브젝트들이 서로..
-
7장) 7.3 서비스 추상화 적용Java & Spring/토비의 스프링 3.1 2021. 8. 8. 17:27
7.3 서비스 추상화 적용 JaxbXmlSqlReader 개선 과제 JAXB 외에 다양한 XML과 자바오브젝트를 매핑하는 기술이 있음 필요에 따라 다른 기술로 변경해서 사용 XML 파일을 좀 더 다양한 소스에서 가져올 수 있게 만든다 앞서 작성한 내용은 UserDao 클래스와 같은 class path 안에서만 XML을 읽어올 수 있음 임의의 class path나 파일 시스템 상의 절대위치 or HTTP 프로토콜을 통해 원격에서 가져오도록 확장하는 방법 생각 7.3.1 OXM 서비스 추상화 OXM (Object-XML Mapping) JAXB 외에 실전에서 자주 사용되는 다양한 XML과 자바오브젝트를 매핑하는 기술(OXM) Castor XML 설정파일 필요 X 인트로스펙션 모드를 지원하기도 하며 간결하고 ..