3.2.2 외부에서 애플리케이션 빈 구성하기
누군가의 독서 목록에서 책 제목만 보여 주는 것이 아니라 책의 Amazon.com 링크도 함께 제공하려고 한다. 그리고 책 정보 링크뿐만 아니라 아마존 제휴 프로그램의 혜택을 받을 수 있도록 해당 책을 태그하여 누군가가 애플리케이션에서 제공한 링크로 책을 구매하면 작은 추천 보상도 하려고 한다.
이 작업은 각 책의 제목에 링크가 설정되도록 readingList.html Thymeleaf 템플릿을 바꿔서 간단하게 구현할 수 있다.
... <dt class="bookHeadline"> <a th:href="'http://www.amazon.com/gp/product/' + ${book.isbn} + '/tag=habuma-20'" th:text="${book.title}">Title</a> by <span th:text="${book.author}">Author</span> ...
이 코드는 완벽하게 작동할 것이다. 이제 누군가 링크를 클릭하여 책을 구매한다면 추천에 따른 보상을 ‘필자’가 받게 된다. habuma-20이 필자의 아마존 제휴 ID이기 때문이다. 여러분이 보상을 받고 싶다면 Thymeleaf 템플릿에 있는 tag 속성 값을 여러분의 아마존 제휴 ID로 바꾸면 된다.
템플릿에 있는 아마존 제휴 ID를 바꾸기 쉽다고 해도 이 방식은 여전히 하드 코딩이다. 지금은 템플릿 하나만 아마존에 연결했지만, 추후에는 기능을 추가하고 애플리케이션의 여러 페이지에서 아마존에 연결해야 할 수도 있다. 이때 아마존 제휴 ID를 바꾸려면 애플리케이션 코드의 여러 부분을 변경해야 한다. 이런 이유로 제휴 ID 등은 종종 코드 외부에 정의하여 그곳에서 관리하는 것이 좋다.