본문 바로가기

토비의 스프링8

토비의 스프링 | 6장. AOP4 - AOP란 무엇인가? 이제까지 UserService에 트랜잭션을 적용해 온 과정을 되짚어 보자.1. 트랜잭션 서비스 추상화트랜잭션 적용을 비즈니스 로직과 함께 넣었을 때 문제가 발생한다. 트랜잭션을 제외한 부분에서 수정작업이 있더라도 트랜잭션 적용 코드를 수정해야 하는 심각한 문제가 있었다. 그래서 인터페이스와 DI를 통해 무엇을 하는지를 남기고 분리하는 트랜잭션 추상화를 수행하였다. 트랜잭션 적용은 더 이상 비즈니스 로직 코드에는 영향을 주지 않고 독립적으로 변경할 수 있게 되었다.2. 프록시와 데코레이션 패턴여전히 비즈니스 로직에는 트랜잭션을 어디에 적용할지 경계설정을 담당하는 코드가 남아 있었다. 이를 제거하기 위해 DI를 이용한 데코레이터 패턴을 적용하였다. 클라이언트가 인터페이스와 DI를 통해 접근하도록 설계하고 데.. 2017. 5. 2.
토비의 스프링 | 6장. AOP2 - 다이내믹 프록시 6.3 다이내믹 프록시와 팩토리 빈우리는 트랜잭션 경계설정과 비즈니스 로직 코드를 분리하기 위해 전형적인 전략 패턴을 사용하였다.부가기능은 자신이 핵심기능을 가진 것처럼 꾸며서 클라이언트가 자신을 거쳐 핵심기능을 사용하도록 했다.그렇게 하기 위해 인터페이스를 통해 부가, 핵심기능을 접근도록 하였다.이렇게 마치 자신이 클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을 받아주는 것을 대리자, 대리인과 같은 역할을 한다고 하여 프록시(Proxy)라 부른다. 프록시를 통해 최종적으로 요청을 위임받아 처리하는 실제 오브젝트를 타깃(tartget) or 실체(real subject)라 부른다.프록시의 특징은 타깃과 같은 인터페이스를 구현했다는 것과 프록시가 타깃을 제어할 수 있는 것이다... 2017. 4. 7.
토비의 스프링 | 3장. 템플릿2 - 응용 3.5 템플릿과 콜백템플릿/콜백의 동작원리템플릿: 어떤 목적을 위해 미리 만들어둔 모양이나 틀을 가리킨다. JSP는 HTML이라는 고정된 부분에 EL과 스크립릿이라는 변하는 부분을 넣은 일종의 템플릿 파일이다. 콜백: 실행되는 것을 목적으로 다른 오브젝트의 메소드에 전달되는 오브젝트를 말한다. 자바에선 메소드 자체를 파라미터로 전달할 방법이 없기 때문에 메소드가 담긴 오브젝트를 전달한다. 이것을 functional object라 한다.UserDao와 StatementStrategy, JdbcContext를 이용한 전략 패턴의 기본 구조에 익명 내부 클래스를 활용한 방식을 템플릿/콜백 패턴이라 한다.전략 패턴의 컨텍스트를 템플릿이라 부르고, 익명 내부 클래스를 콜백이라 부른다.템플릿/콜백 패턴의 콜백은 보.. 2017. 3. 3.
토비의 스프링 | 3장. 템플릿 템플릿이란 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로 부터 독립시켜 효과적으로 활용할 수 있도록 하는 방법을 말한다. 3장에서는 템플릿 기법을 적용하는 방법에 대해 살펴본다.3.1 다시보는 초난감 DAOUserDao의 여러가지 면에서 개선작업을 했지만 아직 미흡한 점이 있다. 바로 예외처리이다.public void deleteAll() throws SQLException { Connection c = dataSource.getConnection(); PreparedStatement ps = c.PreparedStatement("delete from users"); ps.executeUpdate(); ps.close(); c.close(.. 2017. 1. 27.
토비의 스프링 | 2장. 테스트 스프링의 가장 중요한 가치를 무엇이냐고 질문한다면 그 가치는 객체지향과 테스트에 있다. 확장과 변화를 고려한 객체지향적 설계와 그것을 효과적으로 담아낼 수 있는 IOC/DI 같은 기술이라면, 만들어진 코드에 확신을 주고 변화에 유연하게 대처할 수 있는 자신감을 주는 테스트 기술이 있다. 2장에서는 테스트란 무엇이며, 그 가치와 장점, 활용 전략, 스프링과의 관계를 살펴본다.2.1 UserDaoTest 다시 보기이전에는 main() 메소드를 이용해 UserDao 오브젝트의 함수를 호출하고 결과물을 출력함으로써 테스트를 수행하였다.테스트란 결국 내가 예상했던 데로 코드가 정확히 동작하는지 확인해서, 내 코드에 대한 확신을 갖게 해주는 작업이다.테스트에서 원치 않는 결함이 나오면 이를 제거해가는 작업, 일명 .. 2017. 1. 13.
토비의 스프링 | 1장. 오브젝트와 의존관계2 애플리케이션 컨텍스트의 동작방식애플리케이션 컨텍스트는 애플리케이션에서 IOC를 적용해서 관리할 모든 오브젝트에 대한 생성과 관계설정을 담당한다. 대신 직접적으로 DaoFactory와 관계를 맺어주는 코드는 따로 없고 그런 생성정보와 연관관계 정보를 별도의 설정정보를 통해 얻는다. 때로는 외부의 오브젝트 펙토리에 그 작업을 위임하고 그 결과를 가져다가 사용하기도 한다.애플리케이션 컨텍스트의 장점클라이언트는 구체적인 팩토리 클래스를 알 필요가 없다.다양한 오브젝트가 생기더라도 이를 일일이 알 필요없이 애플리케이션 컨텍스트를 이용하여 일관된 방식으로 원하는 오브젝트를 가져올 수 있다.애플리케이션 컨텍스트는 종합 IOC 서비스를 제공해준다.단순히 생성과 관계설정의 제공뿐 아니라 만들어지는 방식, 시점과 전략, .. 2017. 1. 9.
토비의 스프링 | 1장. 오브젝트와 의존관계 스프링은 자바를 기반으로 한 기술이고 자바는 객체지향 프로그래밍을 가장 중요한 가치로 두고 잇다. 스프링의 핵심철학은 객체지향 프로그래밍이 제공하는 폭넓은 혜택을 누릴 수 있도록 기본으로 돌아가는 것이다. 그래서 스프링이 가장 관심을 많이 두는 대상은 오브젝트이다.오브젝트가 생성되고 다른 오브젝트와 관계를 맺고, 사용되고, 소멸하기까지의 전 과정에 대한 고찰이 필요더 나아가 오브젝트가 어떻게 설계되는지어떤 단위로 만들어지며 어떤 과정을 통해 자신의 존재를 드러내고 등장해야 하는지이러한 오브젝트의 관심은 설계와 구현에 관한 여러가지 응용 기술의 관심으로 발전하게 된다.객체지향 설계의 기초와 원칙다양한 목적을 위해 재활용 가능한 설계 방법인 디자인 패턴좀 더 깔끔한 구조가 되도록 지속적으로 개선해나가는 작업.. 2016. 12. 29.
토비의 스프링 | 들어가며... 토비의 스프링을 공부하며 단순히 읽는걸로는 항상 집중력이 끊기고 졸리기 때문에...블로그에다 포스팅을 올린다는 목적으로 정리해 보려구 합니다. 물론 모든 코드를 담을 수는 없겠지만...개인적으로 제가 새롭게 알고 깨우친 부분과 기초 혹은 핵심이라고 생각하는 이론에 대해서도 정리하고자 합니다. 혹시나 토비의 스프링을 보기전, 아니면 볼 없두가 안나는 분들에게 도움이 됐으면 합니다.스프링이란?스프링: 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크스프링 컨테이너설정정보를 참고로 해서 애플리케이션을 구성하는 오브젝트를 생성, 관리독립적 동작도 가능하지만, 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용프레임워크(프로그래밍 모델)애플리케이션을 구성하는 오브젝트가 생성되고 동작하.. 2016. 12. 19.