본문 바로가기

Spring16

Spring - ConnectionPool 기존 데이터베이스 접근 방식을 사용하다 문제점을 알게 되었습니다. 데이터베이스에 접근할 때마다 연결을 열고 닫는 과정에서 비용이 많이 든다 것이었습니다. 이번 포스트에서는 이러한 문제점을 해결하기 위한 방법인 ConnectionPool에 대해 정리해보았습니다. DB Connection 문제점 기존 데이터베이스의 연결 흐름은 다음과 같습니다. 응용 프로그램이 데이터 소스에 데이터베이스 연결을 요청 데이터 소스는 데이터베이스 드라이버를 사용하여 데이터베이스 연결 수행 연결이 생성되고 TCP 소켓이 열림 응용 프로그램이 데이터베이스 작업 수행 연결이 닫히고 소켓이 닫힘 이 흐름에서 문제점은 연결을 열고 닫는 과정이 연결 흐름에 계속 포함되어 있다는 것입니다. 데이터베이스 연결은 TCP연결입니다. 따라서 클라이.. 2022. 11. 21.
Spring - Log4j2 Log4j2는 이전 버전인 Log4j의 업그레이드 버전으로 Logbakc 아키텍처에 내재된 몇 가지 문제를 해결하면서 Logback에서 사용할 수 있는 로깅 프레임워크입니다. Logback처럼 필터링 기능과 자동 리로딩 기능을 지원하며 멀티 스레드 환경에서 비동기 로거는 다른 로깅 프레임워크보다 더 많은 처리를 할 수 있고, 대기 시간도 더 짧다는 장점을 가지고 있습니다. 이번 포스트에서는 Log4j2를 이용한 로깅에 대해 정리해보았습니다. Log4j2 환경설정 log4j2.xml을 작성하고 WEB-INF/classes 하위에 포함될 수 있도록 위치시켜야 합니다. Log4j2가 초기화될 때 해당 설정 파일을 읽어들이기 때문입니다. [xml 파일 정의] Logger Logger는 로깅 작업을 수행하는 Lo.. 2022. 11. 21.
Spring - ExceptionHandler 이번 포스트에서는 스프링의 예외처리에 대해 정리해보았다. 스프링의 기본 예외처리 방식 다음과 같은 예시코드가 있다. @Service public class MemberService implements IMemberService { private MemberDAO memberDAO; // null public MemberService() {} //@Autowired //public MemberService(MemberDAO memberDAO) { // this.memberDAO = memberDAO; //} ... } 원래라면 MemberDAO가 Autowired를 통해 외부에서 객체가 주입이 되어야 하는데 그러지 못하여 null인 상태이다. 이 상태에서 고객이 회원가입을 하면 내부에서는 데이터베이스에 접.. 2022. 11. 21.
Spring - JUnit+Mock 기반 스프링 단위테스트 이번 포스트에서는 JUnit과 Mock을 기반으로 스프링에서 단위 테스트를 하는 방법에 대해 정리해보겠습니다. Mock 가장 먼저 Mock에 대해 알아보겠습니다. Mock은 테스트를 위한 가짜 객체를 말합니다. 테스트를 할 때 객체가 필요하면 객체를 만들어야하는데 실제 객체를 만들기 위해서는 비용/시간/의존성문제가 걸쳐져 있습니다. 때문에 실제 객체를 구현하기 어려울 경우 Mock이라는 가짜 객체를 이용하여 테스트를 진행합니다. Mokito Mokito는 개발자가 동작을 직접 제어할 수 있는 가짜 객체를 지원하는 테스트 프레임워크입니다. [스프링 객체 의존도 그림] [Mock 객체를 이용한 단위 테스트] 보통 스프링으로 웹 어플리케이션을 개발하면 여러 객체들의 의존성이 생기는데, 이러한 의존성은 단위 테.. 2022. 11. 21.