framework/spring

스프링 DI 사용 시점

datajoy 2020. 3. 31. 23:27

스프링에서 중요한기능인 DI 하지만, 잘못사용하게되면 데이터가 꼬이는 결과를 낼수있다.

스프링의 DI는 runtime과 동시에 생성되고 주입되게되는데 만약 저장소로써 역할을 하는 객체가 DI되게되면 client에서 매 요청 시 데이터가달라지기 때문에 이전요청 시 에는 값을 저장하였다가다 다음요청 시에 null 값으로 들어온다면 값이 초기화 되지않았기때문에 이전값이 살아있을 수 있다.

그래서 DI를 사용할때 우선 해당객채가 값을 저장하는역할로 사용한다면 주의해서 사용하거나 사용하지않는 편이 좋다.
주의사항을 고려하지않고 사용할시 단위테스트에서는 문제없다가 실제 운영에서 여러 요청이 들어오면 보이지말아야할 데이터가 노출되는 결과를 초래할수있다.

싱글톤으로 만들어져 여러 스레드에서 동시에 사용해도 괜찮은가?

상태를 갖고 있고, 멀티스레드 환경에서 안전하지않다면 DI를 사용하지않는다.