전체 글

전체 글

    커스텀 어노테이션과 리플렉션

    커스텀 어노테이션 Retention은 '보유'라는 뜻이다. Retention Policy(보유 정책)은 크게 Compile과 Runtime 두개로 나뉜다. Retention은 어느 영역까지 어노테이션을 유지시킬 것인지에 대한 기능이다. Retention Policy를 Compile로 설정하면 Runtime 진입 시에 해당 어노테이션이 사용되지 못하도록 클래스 파일에는 해당 어노테이션이 삭제된다. 사용자가 만드는 기능은 대부분 Runtime 에 속한다. Compile 단계에만 머무는 경우는 @Getter와 @Setter가 대표적이다. 컴파일 단계에 get, set 메소드를 만들어주고 클래스 파일에 해당 @Getter @Setter 어노테이션을 없애버리기 때문이다. @Target(ElementType.TYP..

    JPA Entity에서 필드에 this를 쓴 것과 안 쓴 것의 차이

    @Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; public void changeName(){ name = "stir"; this.name = "stir"; } } 예전에 인프런 질문 답변에 Entity에서 필드 변경을 위해 위와 같이 this로 접근하는 것과 그냥 접근하는 것에 대한 차이를 물어보신 분이 계셨고 김영한님이 친절히 설명해주셨는데 그 글이 어디갔는지 검색해도 안나온다. 깊게 들어가면 프록시에 관련된 답변이었걸로 기억한다. 일단은 예전에 강의 정리한 내용에 의하면 김영한님은 this를 안쓴다고한다. Intellij에 보라..

    리눅스 정규 표현식 활용 A to Z

    홑 따옴표 쌍따옴표 echo "Hello $USER" echo 'Hello $USER’ 홑따옴표는 모든 문자 그대로 해석 쌍따옴표는 변수 확장이나 명령어 치환 등에 사용된다. grep GREP(Global Regular Expression Print)의 약자로 텍스트 파일에서 특정 패턴을 찾아 출력하는 명령어다. 기본 정규 표현식을 의미하는 BRE(Basic Regular Expression)를 사용한다. grep "apple" example.txt example.txt 파일에서 "apple"을 검색한다. grep "^apple" example.txt example.txt 파일에서 라인의 시작이 apple인 경우를 모두 검색한다. ( ) 그룹으로 묶기 위해서는 BRE에서는 그룹 특수문자 앞에 \를 붙여서..

    @Transactional을 테스트에 써야할까?

    Don’t Use @Transactional in Tests How to not ruin your Spring Boot application test suite medium.com 예전에 이 글 보고 쓰지말자라고만 생각했다. @Transactional을 써서 얻는 부작용이 꽤 많아 보였기 때문이다. 위 영상을 보면 @Transactional을 테스트에 쓰는 것이 단점에 비하면 얻는 장점이 많다고 한다. 영상에 나온 단점을 다 이해할 순 없지만 개인적으로 느꼈던 단점 중 하나는 트랜잭션이 비즈니스 로직에 적혀있지 않아도 테스트에 있는 @Transacitonal이 전파된다라는 특징 때문에 운영 서비스에 크리티컬 이슈를 발생시킬 수도 있다라는 생각을 했다. 영상에선 그 외 단점도 설명도 하고 있는데 JPA를 ..