Why?

    Java - @Override는 왜 사용할까?

    배경 프로젝트를 진행하다 문뜩 @Override 애너테이션을 보다가 이런 생각이 들었다. "이 애너테이션이 반드시 있어야하나?"라는 생각이 들어서 정리를 해봤다. @Override란? @Override는 상위 클래스나 인터페이스의 메서드를 오버라이딩했을 때 오버라이딩한 메서드를 명시해주는 애너테이션이다. 왜 사용할까? 메서드를 오버라이딩하려면 메서드명, 매개변수, 반환 타입이 상위 클래스의 메서드와 정확히 일치해야 한다. 그러나 휴먼에러로 상위 클래스의 메서드와 다르게 작성하는 경우가 생길 수 있다. 하지만 자바는 해당 메서드 오버라이딩 된 메서드인지 알 수 없기 때문에 다른 메서드로 취급하고 에러를 발생시키지 않는다. 이 때 @Override 애너테이션을 사용하면 컴파일러가 해당 메서드가 상위 클래스를..

    Spring - private 메서드에 @Transactional이 적용될까?

    배경 오늘도 어김없이 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..