본문 바로가기

프레임워크/스프링25

[Spring] 동시성 문제(쓰레드 로컬) 동시성 문제는 지역 변수에서는 발생하지 않는다. 지역 변수는 쓰레드마다 각각 다른 메모리 영역이 할당된다. > 동시성 문제가 발생하는 곳은 같은 인스턴스의 필드(주로 싱글톤에서 자주 발생), 또는 static 같은 공용 필드에 접근할 때 발생한다. > 동시성 문제는 값을 읽기만 하면 발생하지 않는다. 어디선가 값을 변경하기 때문에 발생한다. 이럴 때 사용하는 것이 바로 쓰레드 로컬이다 ThreadLocal 예제 소스 @Slf4j public class ThreadLocalService { private ThreadLocal nameStore = new ThreadLocal(); public String logic(String name) { log.info("저장 name={} -> nameStore={}.. 2022. 11. 5.
[Spring] 로그 추적기 파라미터로 동기화 개발 HelloTraceV2 @Slf4j @Component public class HelloTraceV2 { private static final String START_PREFIX = "-->"; private static final String COMPLETE_PREFIX = " 2022. 11. 1.
[Spring] 로그 추적기 프로토타입 개발 김영한의 스프링 고급 강의를 복습하기 위해 HelloTraceV1 import hello.advanced.trace.TraceId; import hello.advanced.trace.TraceStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Slf4j @Component public class HelloTraceV1 { private static final String START_PREFIX = "-->"; private static final String COMPLETE_PREFIX = " 2022. 10. 31.
@Resource vs @Autowired vs @Inject @Resource 어노테이션이란? @Autowired와 같은 역할을 한다고 보면된다. @Resource 어노테이션은 빈의 이름을 이용해서 주입할 객체를 검색한다. @Resource 어노테이션을 사용하려면 앞서 @Autowired 어노테이션과 마찬가지로 다음의 두가지만 추가하면된다. 자동 주입 대상에 @Resource 어노테이션 사용 XML설정에 설정 추가 @Resource 어노테이션은 빈의 이름을 사용해서 주입할 빈 객체를 찾기 때문에, @Resource 어노테이션의 값으로 빈 객체의 이름을 지정한다. @Autowired와 @Resource, @Inject의 차이점 1. @Autowired : 타입(클래스)로 Bean을 지정한다.(생성자/필드/메서드에 모두 적용 가능) 2. @Resource : Name.. 2022. 10. 27.