dev2017. 3. 24. 18:39

https://dzone.com/articles/avoid-spring-annotation-code-smell-use-spring3-custom-annotations


예를들어 이런 코드가 있다.

@Service
@Scope(value = "prototype")
@Transactional(readOnly = true, rollbackFor = RuntimeException.class)
public class UserService {

}

그리고 동일한 스펙으로 다른 Sevice 도 사용한다.

@Service
@Scope(value = "prototype")
@Transactional(readOnly = true, rollbackFor = RuntimeException.class)
public class RoleService {

}


동일한 어노테이션이 반복되는데,
이를 custom annotation 을 정의해서 대체해서 쓰면,
보기도 좋고, 차후 스펙 변경시에 대응하기도 좋다.
@Service
@Scope(value = "prototype")
@Transactional(readOnly = true, rollbackFor = RuntimeException.class)
public @interface ReadOnlyService{

}

이런 내용임.