디버깅 로컬에서 예상치 못한 오류가 발생하면, 디버깅 모드를 활용하여 해당 오류를 해결합니다. 플로우를 순차적으로 따라가면서 각각의 상태와 상황들을 쉽게 파악할 수 있기 때문이죠. 클라이언트 개발자와 협업을 하기 위해선, 작성한 어플리케이션을 배포하여야 합니다. 배포된 어플리케이션에서 발생한 오류는 어떻게 파악하면 좋을까요? 물론, 로그를 꼼꼼하게 기록한다면 파악하기 쉬울 것 같습니다. 하지만 한계는 있죠. 배포되어있는 어플리케이션을 대상으로 원하는 지점에서 디버깅을 한다면, 좀 더 쉽게 파악할 수 있을 것 같습니다. Debugger, Debuggee Intellij나 Ecplise와 같은 IDE(Integrated development environment, 통합 개발 환경)에서 제공해주는 디버깅 기능..
Buffered Reader와 Scanner Java를 처음 시작하면서 입력을 받을 땐 항상 Scanner를 사용했다. 만약 정수를 하나 입력받는 다고 하면 다음과 같이 작성할 수 있다. Scanner sc = new Scanner(System.in); int i = sc.nextInt(); Scanner 클래스가 제공하는 여러 메서드들을 통해 정수 입력, 줄 단위 입력, 문자열 입력 등등 원하는 동작을 수행할 수 있다. 의문점 사실, Scanner만 사용했다면 궁금해하지도 않았을 의문점이 있다. Java로 알고리즘 문제를 풀 때, 평소처럼 Scanner를 통해 입력을 받으면 시간초과가 나는 Case를 자주 격어보았다. 메인 로직은 모두 동일하고, 입출력의 방식만 달랐을 뿐인데.. 졸지에 틀린 풀이가 되..
Spring을 활용하여 웹 어플리케이션을 개발하면, 다양한 Http 요청에 대해 처리하는 기능들을 개발 할 것이다. 그리고, 필연적으로 공통적으로 처리해야 할 기능과 중복된 코드들이 많이 생긴다. 이러한 웹 요청에 대한 공통 관심사를 처리하기 위해 Filter와 Interceptor를 활용할 수 있다. SpringBoot를 활용한 Spring Web 요청 flow 출처 : https://gowoonsori.com/spring/architecture/ Filter Filter.class A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on..
Spring application 테스트 Spring을 사용하여 application을 구성 했다면, 테스트 실행 환경에서도 동일한 구성이 갖추어져 있어야 한다. 직접 구성하지 않은 서블릿이나 WAS, DataSource, jdbcTemplate 및 실행 환경등 Java로만 구성된 code Test public class Dao { private final CustomConnceton customConnceton = new CustomConnection(); public void do() { customConnceton.query(...) } } @Test void saveTest() { private Dao dao = new Dao(); dao.do() //then } Spring framework를 ..