작성한 질문수
스프링 DB 2편 - 데이터 접근 활용 기술
작성
·
216
0
@Slf4j 롬복을 이용하여 log값을 출력할때,
맨 위 클래스에 작성하고 사용하지 않고 클래스 위에 각각 @Slf4j를 작성하는 이유는 무엇인지 궁금합니다.
답변 1
안녕하세요. jeong정재인님, 공식 서포터즈 David입니다.
맨 위 클래스라는 건 어떤 걸 말씀하시는걸까요?
감사합니다.
package hello.springtx.apply; import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.event.EventListener; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionSynchronizationManager; @SpringBootTest public class InitTxTest { @Test void go(){ //초기화 코드는 스프링이 초기화 시점에 호출된다. } @TestConfiguration static class InitTxTestConfig{ @Bean Hello hello(){ return new Hello(); } } @Slf4j static class Hello{ @PostConstruct @Transactional public void initV1(){ boolean isActive = TransactionSynchronizationManager.isActualTransactionActive(); log.info("Hello init @PostConstruct tx active={}", isActive); } @EventListener(ApplicationReadyEvent.class) @Transactional public void initV2(){ boolean isActive = TransactionSynchronizationManager.isActualTransactionActive(); log.info("Hello init ApplicationReadyEvent tx active={}", isActive); } } }
예를 들어, 이 코드를 봤을때 public class InitTxTest 위에 @Slf4j를 작성하지 않고, static class Hello 위에 작성하는지 궁금합니다.
public class InitTxTest 위에 작성하면 static class Hello에서도 사용할 수 있지 않나요?
답글 달기
공유
Hello 클래스 내에서만 로그를 사용하고 있기 때문입니다:)
예를 들어, 이 코드를 봤을때 public class InitTxTest 위에 @Slf4j를 작성하지 않고, static class Hello 위에 작성하는지 궁금합니다.
public class InitTxTest 위에 작성하면 static class Hello에서도 사용할 수 있지 않나요?
답글 달기
공유