제어의 역전이란 간단히 프로그램의 제어 흐름 구조가 뒤바뀌는 것이라고 설명할 수 있다.위의 UserDaoTest 클래스는 두가지 역할을 하고 있다.ConnectionMaker 객체 생성 및 UserDao 객체에 주입UserDao test따라서 이 두가지 기능 분리해야
@Before 메소드가 테스트 메소드 개수 만큼 반복되기 때문에 애플리케이션 컨텍스트도 3번 만들어진다. 빈이 많아지고 복잡해지면 애플리케이션 컨텍스트 생성에 적지 않은 시간이 걸릴 수 있다.테스트는 가능한 독립적으로 매번 새로운 오브젝트를 만들어서 사용하는 것이 원칙
전략 패턴의 기본 구조에 익명 내부 클래스를 활용한 방식을 스프링에서는 템플릿/콜백 패턴이라고 부른다. 전략 패턴의 컨텍스트를 템플릿이라 부르고, 익명 내부 클래스로 만들어지는 오브젝트를 콜백이라고 부른다.템플릿템플릿은 어떤 목적을 위해 미리 만들어둔 모양이 있는 틀을
템플릿/콜백 패턴의 기본적인 동작방식, 만드는 방법을 알아봤으니 이번에는 스프링에서 제공하는 템플릿/콜백 기술을 살펴보자. 스프링은 JDBC를 이용하는 DAO에서 사용할 수 있도록 준비된 다양한 템플릿과 콜백을 제공한다.그동안 만들었던 JdbcContext를 스프링에
수평적 분리UserDao와 UserService의 분리각각 담당하는 코드의 기능적인 관심에 따라 분리서로 불필요한 영향을 주지 않으며 독자적으로 확장이 가능같은 애플리케이션 로직을 담은 코드지만 내용에 따라 분리 수직적 분리트랜잭션 추상화애플리케이션 비지니스 로직과 로
단순히 확장성을 고려해서 한 가지 기능을 분리한다면 전형적인 전략 패턴을 사용하면 된다. 하지만 전략 패턴으로는 트랜잭션 기능의 구현 내용을 분리해냈을 뿐이다. 트랜잭션을 적용한다는 사실은 코드에 그대로 남아 있다. 구체적인 구현 코드는 제거했을지라도 위임을 통해 기능
투명한 부가기능을 적용하는 과정에서 발견됐던 거의 대부분의 문제는 제거했다.하지만, 아직 해결할 과제가 남아 있다. 부가기능의 적용이 필요한 타깃 오브젝트마다 거의 비슷한 내용의 ProxyFactoryBean 빈 설정정보를 추가해 주는 부분이다.JDK의 다이내믹 프록시
리소스 추상화 같은 클래스패스 외의 클래스패스 루트 등에 있는 XML 또는 상대적인 클래스 패스가 아니라 서버나 개발 시스템의 특정 폴더에 있는 파일을 읽을 수 없을까? 더 나아가서 웹 상의 리소스 파일을 가져올 수 없을까? 동일한 목적에 사용법이 다른 여러 가지 기
하나 이상의 SQl을 맵으로 전달받아 한 번에 수정해야 하는 경우에는 자칫 문제가 심각한 문제가 발생할 수 있다.맵으로 SQL과 키의 쌍을 전달받은 updateSql() 메소드는 한 번에 한 개의 SQL을 수정해주는 같은 이름의 updateSql() 메소드를 맵 안에
근본적으로 엔터프라이즈 개발에 나타나는 복잡함의 원인은 제거 대상이 아니다. 대신 그 복잡함을 효과적으로 상대할 수 있는 기법이 필요하다.문제는 비즈니스 로직의 복잡함을 효과적으로 다루기 위한 방법과 기술적인 복잡함을 효과적으로 처리하는 데 적용되는 방법이 다르다는 점
일관된 의미를 가지고 유연하며 애플리케이션 전반에 공유 가능한 도메인 모델을 따르는 오브젝트로 정보를 다루면 많은 장점이 있다. 코드는 이해하기 쉽고 로직을 작성하기도 수월하다. 하지만 단점도 있다.최적화된 SQL을 매번 만들어 사용하는 경우에 비해 성능 면에서 조금은