전체 글

    [Spring] 템플릿 콜백 패턴

    💡 템플릿 콜백 패턴이란? 전략 패턴의 기본 구조에 인터페이스를 상속하는 클래스를 만들지 않고 익명 내부 클래스를 활용하는 방식 이런 방식을 스프링에서는 템플릿 콜백 패턴이라고 한다. 전략 패턴의 컨텍스트를 템플릿이라 부르고, 익명 내부 클래스로 만들어지는 오브젝트를 콜백이라 한다. 전략 패턴과 DI의 장점을 익명 내부 클래스 사용 전략과 결합해 독특하게 활용 주로 try/catch/finally 블록을 사용하는 코드에 사용된다. 💡 템플릿 콜백의 동작원리 콜백은 보통 단일 메소드 인터페이스를 사용한다. 또한 하나의 템플릿에서 여러 가지 종류의 전략을 사용해야 한다면 하나 이상의 콜백 오브젝트를 사용 할 수 있다. 콜백은 일반적으로 하나의 메소드를 가진 인터페이스를 구현한 익명 내부 클래스로 만들어진다...

    [Spring] 예외처리 기능 갖추기

    🤨 지금까지 만들어왔던 DAO 객체에는 심각한 문제인 예외 상황에 대한 처리 문제가 있다. 정상적인 JDBC코드의 흐름을 따르지 않고 중간에 어떤 이유로든 예외가 발생했을 경우 리소스를 반환하지 않으면, 시스템에 심각한 문제를 일으킬 수 있다. 이를 위해 예외 상황에 대한 처리를 해줘야한다. ✏️ 예를 들어, DAO 객체의 deleteAll()을 보자. public void deleteAll() throws SQLException { Connection c = dataSource.getConnection(); PreparedStatement ps = c.prepareStatement("delete from users"); ps.executeUpdate(); ps.close(); c.close(); } d..

    [백준] 14888번 - 연산자 끼워넣기

    ps://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, �� www.acmicpc.net 처음에 연산자가 아닌 수들의 순서도 바뀔 수 있는줄 알고 푸는 방법을 생각해내는데 애를 먹었었다. 하지만 나중에 수들의 순서는 고정된 것을 알아채고, 연산자의 순서만 바뀐다는 것을 알고 해결방법을 쉽게 생각해낼 수 있었다. 만약 수들이 모여 있고, 이 수들의 모든 경우의 수를 구하고 싶다면 next_permutation을 사용해 구할 수 있다..

    [Spring] 학습 테스트, 버그 테스트

    💡 학습 테스트(learning test)란? 다른 개발팀에서 만들어서 제공한 라이브러리 등에 대해서도 테스트를 작성해야하는 것 자신이 사용할 API나 프레임워크의 기능을 테스트로 보면서 사용 방법을 익히기 위함. 테스트이지만 기능에 대한 검증이 목적이 아닌, 그 사용 방법을 바로 알고 있는지를 검증하는게 목적 ✏️ 학습 테스트의 장점 다양한 조건에 따른 기능을 손쉽게 확인해볼 수 있다. 학습 테스트 코드를 개발 중에 참고 할 수 있다. 프레임워크나 제품을 업그레이드할 때 호환성 검증을 도와준다. 테스트 작성에 대한 좋은 훈련이 된다. 새로운 기술을 공부하는 과정이 즐거워진다 💡 버그 테스트(bug test)란? 코드에 오류가 있을 때 그 오류를 가장 잘 드러내줄 수 있는 테스트 버그 테스트는 일단 실패..

    [Spring] 테스트를 위한 애플리케이션 컨텍스트 관리

    https://withseungryu.tistory.com/84?category=880574 Java Build Path -> classpath를 확인해준 후 아래와 같이 경로 수정 @ContextConfiguration(locations="classpath:test-applicationContext.xml") 🧐 @Autowired 란? 스프링의 DI에 사용되는 특별한 애노테이션 Autowired가 붙은 인스턴스 변수가 있으면, 테스트 컨텍스트 프레임워크는 변수 타입과 일치하는 빈을 찾는다. 타입이 일치하는 빈이 있으면 인스턴스 변수에 주입해준다. 이때 @Autowired는 applicationContext.xml에 붙은 것이 아닌, AppicationContext에 붙여있는데 애플리케이션 컨텍스트가 ..

    [Spring] JUnit - @Before, @After

    💡 @Before, @After 란? Test 코드에서 아래 코드가 계속 중복되는 것을 볼 수 있다. ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml"); User dao = context.getBean("userDao", UserDao.class); 이렇게 중복된 코드는 별도의 메소드로 뽑아내는 것이 가장 손쉬운 방법인데, 메소드 추출 리팩토링 방법이 아닌 JUnit이 제공하는 기능인 @Before, @After가 존재한다. ✏️ @Before는 반복되는 준비 작업을 별도의 메소드에 넣게 해 주고, 이를 매번 테스트 메소드를 실행하기 전에 먼저 자동으로 실행시켜주는 기능이다. ✏️ @After는 @..