프레임워크/토비의 스프링

    토비의 스프링 5장 요약 정리 - 서비스 추상화

    토비의 스프링 5장 요약 정리 - 서비스 추상화

    서비스 추상화 자바에는 표준 스펙, 상용 제품, 오픈 소스를 통틀어서 사용 방법과 형식은 다르지만 기능과 목적이 유사한 기술이 존재한다. 환경과 상황에 따라 기술이 바뀌고, 그에 따른 API를 사용하고 다른 스타일의 접근 방법을 따라야 한다는 것은 매우 피곤한 일이다. 지금까지 만든 DAO에 트랜잭션을 적용해보며 스프링이 어떻게 성격이 비슷한 여러 종류의 기술을 추상화하고 이를 일관된 방법으로 사용할 수 있도록 지원하는지 알아보자. 사용자 레벨 관리 기능 추가 현재 UserDao에서는 소위 CRUD라고 말하는 기능만 제공한다. 그 외에 어떠한 비즈니스 로직도 제공하지 않는다. 새로운 요구사항이 들어와서 단지 정보를 넣고 검색하는 것 외에도 정기적으로 사용자의 활동내역을 참고해서 레벨을 조정해주는 기능이 ..

    토비의 스프링 4장 요약 정리 - 예외 처리

    예외처리의 함정 예외처리는 코딩 초보 시절에는 왜 하는지도 모르고 그냥 넘어가기 쉽다. 그런데, 예외처리를 대충한다면, 막상 예외가 발생했을 때 디버그가 매우매우 어려워지는 상황이 발생할 수 있다. 가장 문제인 코드 try { ... } catch(Exception e) { // no code } catch 블록에 아무것도 적지 않는 개발자가 많다. 예외 발생 시 무엇이 문제인지도 모른채 코드는 정상적으로 실행되지 않는 상태가 될 수 있다. 소위 예외 블랙홀로 불리며 모든 예외를 잡아먹는다. 덜 문제인 코드 try { ... } catch(Exception e) { e.printStackTrace(); } 예외가 무엇인지 적어도 프린트라도 하는 코드이다. 올바른 예외처리 방법은? 크게 복구하는 방법과 단..

    토비의 스프링 3장 요약 정리 - 템플릿

    토비의 스프링 3장 요약 정리 - 템플릿

    템플릿이란? 코드 블럭이 갖는 특성에 따라 코드를 분리하는 것이다. 다음과 같은 특징을 갖는다고 가정한다. 변경을 통해 그 기능이 다양해지고 확장되는 성질을 가진 코드가 있다. 고정되어 있고 변하지 않으려는 성질을 가진 코드가 있다. 일정한 패턴으로 유지되는 특성을 가지는 부분을 독립시킨 것이 템플릿(틀)이다. 책에서는 UserDAO에서 비즈니스 로직을 담당하는 부분(변화)과 DB를 연결하는 부분(고정)을 나누었다. deleteAll() 개선하기 public void deleteAll() throws SQLException { Connection c = null; PreparedStatement ps = null; try { c = dataSource.getConnection(); ps = c.prepa..

    토비의 스프링 2장 요약 정리 - 테스트

    이 포스팅은 2장을 요약 정리한 것이며, 상세한 정리는 이 링크에서 제공한다. 스프링과 테스트 스프링에서 제공하는 가장 중요한 가치 객체지향, 테스트 현대의 앱이 복잡해져가며, 테스트의 중요성은 더욱 높아지고 있다. 좋은 코드는 테스트하기 쉬운 코드라는 특징을 갖는 경우가 많다. 변화에 대응하는 전략 IoC 그리고 DI 스프링의 의존관계 주입형 코드는 로직 코드의 직접적인 수정이 아닌 외부에서 주입하는 객체의 설정정보를 바꾸는 것만으로 손쉬운 변화가 가능하다. 테스트 코드에 변화가 생겼을 때, 해당 코드가 특정 로직에서 정상적으로 작동하는지 알 수 있게 해준다. 테스트 전략 나쁜 테스트의 예 - 웹을 통한 테스트 테스트하고자 하는 코드 외에 부가적인 코드가 너무 많이 들어간다. 모든 레이어의 기능을 다 ..

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

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

    이 글은 요약 정리이며, 상세한 정리는 여기 에 있다. 1.1 초난감 DAO public class UserDao { public void add(User user) throws SQLException, ClassNotFoundException { Class.forName("org.postgresql.Driver"); String user = "postgres"; String password = "password"; Connection c = DriverManager.getConnection( "jdbc:postgresql://localhost/toby_spring" , user , password ); PreparedStatement ps = c.prepareStatement( "insert into ..

    토비의 스프링 0장 정리

    스프링이란 무엇인가? 자바 기반의 다양한 애플리케이션을 만드는 것을 도와준다. 웹 뿐만 아니라 배치 등 다양한 영역을 포괄한다. 애플리케이션 코드에 언제나 존재하는 공통 영역에 대한 작성을 쉽고 깔끔하게 만들어준다. 공통 프로그래밍 모델이라는 것을 지원한다. 트랜잭션 처리, 다국어 처리, AOP 처리 등 애플리케이션에는 언제나 공통 영역이 존재한다. 애플리케이션에 자주 사용되는 다양한 기술 API도 제공한다. CGLIB, Jackson(Object Mapper) 등 ... 스프링 컨테이너 스프링 설정 정보(@Configuration)로 생성된 객체들을 일반적으로 싱글톤으로 관리한다. 물론 빈 스코프 설정에 따라 항상 싱글톤은 아닐 수 있다. 객체지향 원칙을 지키기 어려운 싱글톤의 단점을 해소해준다. 공통..

반응형