Java - clazz 변수명은 왜 사용할까?
·
Why?
개요Java 코드를 살펴보다 보면 간혹 Class 객체 변수명으로 clazz를 사용하는 것을 볼 수 있다. 오늘도 Mockito 동작 원리가 궁금해서 관련 코드를 살펴보던 중에 또 clazz 변수명을 보게 되었다. 이전에 clazz를 보면 '왜 이름을 저렇게 지었지?'라고 생각만 하고 넘어갔지만 이번에는 조금 더 호기심이 생겨 clazz 변수명을 사용한 이유에 대해 알아보았다.public class MockSettingsImpl extends CreationSettings implements MockSettings, MockCreationSettings { ... private boolean invocationListenersContainsType(Class clazz) { Ite..
Java - @Override는 왜 사용할까?
·
Why?
배경 프로젝트를 진행하다 문뜩 @Override 애너테이션을 보다가 이런 생각이 들었다. "이 애너테이션이 반드시 있어야하나?"라는 생각이 들어서 정리를 해봤다. @Override란? @Override는 상위 클래스나 인터페이스의 메서드를 오버라이딩했을 때 오버라이딩한 메서드를 명시해주는 애너테이션이다. 왜 사용할까? 메서드를 오버라이딩하려면 메서드명, 매개변수, 반환 타입이 상위 클래스의 메서드와 정확히 일치해야 한다. 그러나 휴먼에러로 상위 클래스의 메서드와 다르게 작성하는 경우가 생길 수 있다. 하지만 자바는 해당 메서드 오버라이딩 된 메서드인지 알 수 없기 때문에 다른 메서드로 취급하고 에러를 발생시키지 않는다. 이 때 @Override 애너테이션을 사용하면 컴파일러가 해당 메서드가 상위 클래스를..
Spring - private 메서드에 @Transactional이 적용될까?
·
Why?
배경 오늘도 어김없이 private 메서드에 @Transactional 애너테이션을 적용했는데 오늘따라 SonarLint가 눈에 띄었다. @Transactional private void createRoles(Member member) { List roles = authorityUtils.createRoles(member.getEmail()); if (roles.isEmpty()) { throw new BusinessLogicException(ExceptionCode.MEMBER_ROLE_DOES_NOT_EXISTS); } member.setRoles(roles); } Non-public methods should not be "@Transactional" Bug Major java:S2230 Marki..
Cold Bean
'Why?' 카테고리의 글 목록