스프링/토비의 스프링 4

토비의 스프링 3장 - 템플릿

템플릿이란? 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 활용할 수 있도록 하는 방법이다. 다시 보는 초난감 DAO DB 커넥션처럼 제한적인 리소스를 공유해 사용하는 서버에서 동작하는 JDBC 코드는 예외처리가 반드시 필요하다. 예외가 발생하더라도 사용한 리소스를 반환해줘야 하기 때문이다. public void deleteAll() throws SQLException { Connection c = dataSource.getConnection(); PreparedStatement ps = c.prepareStatement("delete from users"); ps.executeUpdate(); ps..

토비의 스프링 2장 - 테스트

현대의 앱이 복잡해져 가며, 테스트의 중요성은 더욱 높아지고 있고, 스프링에서는 테스트를 쉽게 해주는 도구들을 제공한다. 작은 단위의 테스트 한꺼번에 너무 많은 것을 몰아서 테스트하면 테스트 수행 과정도 복잡해지고, 오류가 발생했을 때 정확한 원인을 찾기가 힘들어진다. 따라서 테스트는 작은 단위로 쪼개서 하는 것이 좋다. 여기서 말하는 작은 단위는 어느 정도인지 정해진 것이 아니지만, 일반적으로 단위는 작을수록 좋다. 좋은 테스트의 특징 테스트의 일관성 외부 영향에 상관이 없어야 하고, 반복적으로 테스트를 해도 항상 동일한 결과를 내야 한다. 중복된 데이터로 문제가 일어날 수 있는 경우는 테스트를 수행 후 사용자 정보를 삭제해서 수행하기 이전 상태를 만들어주는 것이다. 포괄적인 테스트 네거티브 테스트 부..

토비의 스프링 1장 - 오브젝트와 의존관계

스프링이 가장 관심을 많이 두는 대상은 오브젝트다. 이 오브젝트를 이해해야 스프링을 이해할 수 있다. 이번 장에서는 오브젝트의 설계와 구현, 동작원리를 알아보자. 초난감 DAO public class UserDao { public void add(User user) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book"); PreparedStatement ps = c.prepareStatement("insert into users(id,..