전체 글

    Enum과 Generic 함께 사용하기

    개요 코드를 단순하게 만들면서 가독성을 높히기 위한 개발을 하다보면 Enum 타입을 사용하는 것은 흔하게 일어납니다. 또한 if / else 문 사용을 지양하는 방향으로 코드를 만들다 보면 Enum 클래스에 추상 메소드나 인터페이스를 구현하는 일도 마주하게 될 것입니다. 저 역시 조금 더 클린한 코드를 만들기 위해 Enum 클래스를 많이 사용하는데요. 최근에 회사에서 맡은 프로젝트를 진행하면서 Enum 타입을 생성하고 인터페이스를 상속 받아서 각 타입별로 상속 받은 메소드를 구현하고 있었습니다. 그런데 Enum 타입에 정의한 상수별로 각각 다른 타입의 객체를 리턴해주고 싶은 니즈가 생겼습니다. 그 내용을 아래에 공유하고자 합니다. 인터페이스를 구현한 Enum 클래스 ViewAreaBanner 인터페이스를..

    Bash Terminal을 세련되게(Mac)

    👍 이번 블로그에서는 테마, Powerline, 폰트, Powerline-gitstatus를 추가하여 위의 첨부한 이미지와 같이 일반 Base Terminal을 아름답고 유용하게 보이게 하는 방법을 단계별로 살펴 보겠습니다. Mac에서 아마 기본 Terminal.app을 실행시키면 위와 같은 모습일 것입니다. 자, 그럼 바로 테마와 폰트 등을 적용해봅니다. 💪 Step 1. 새로운 테마 적용하기 첫 번째는 새로운 테마를 적용해 보는 것입니다. 기본 Terminal.app을 이용해서 개발을 하기에는 약간 개발력(?)이 떨어집니다. 그리고 무엇보다 저와 같은 서버 개발자들은 Terminal.app을 사용할 일이 많기 때문에 이왕이면 간지(?)가 나는 Terminal.app으로 개발하고 싶을 것으로 예상합니다..

    6장. AOP4

    6.6 트랜잭션 속성 6.6.1 트랜잭션 정의 트랜잭션 전파 트랜잭션 전파란 트랜잭션 경계에서 이미 진행 중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식을 말한다. 1. PROPAGATION_REQUIRED 가장 많이 사용되는 트랜잭션 속성이다. 진행 중인 트랜잭션이 없으면 새로 시작하고, 이미 시작된 트랜잭션이 있으면 이에 참여한다. DefaultTransactionDefinition의 트랜잭션 전파 속성은 바로 이 PROPAGATION_REQUIRED이다. 2. PROPAGATION_REQUIRED_NEW 항상 새로운 트랜잭션을 시작한다. 즉 앞에서 시작된 트랜잭션이 있든 없든 상관없이 새로운 트랜잭션을 만들어서 독자적으로 동작하게 한다. 3. PROPAGATION_NOT..

    6장. AOP3

    6.5 스프링 AOP 6.5.1 자동 프록시 생성 실습 코드 링크 : https://github.com/vvshinevv/toby-spring/tree/feature/6.5.1 프록시 팩토리 빈 방식의 접근 방법의 한계라고 생각했던 두 가지 문제가 있었다. 그 중에서 부가기능이 타깃 오브젝트마다 새로 만들어지는 문제는 스프링 ProxyFactoryBean의 어드바이스를 통해 해결됐다. 남은 것은 부가기능의 적용이 필요한 타깃 오브젝트마다 거의 비슷한 내용의 ProxyFactoryBean 빈 설정정보를 추가해주는 부분이다. 새로운 타깃이 등장했다고 해서 코드를 손댈 필요는 없어졌지만, 설정은 매번 복사해서 붙이고 target 프로퍼티의 내용을 수정해줘야 한다. 중복 문제의 접근 방법 반복적인 프록시의 메소..