Back-end/Java, Kotlin
스프링 위에 공통 클래스를 만들기
philo0407
2021. 3. 7. 13:52
우선 싱글톤 패턴을 직접 만들어서 스프링 클래스 위에 올리려고 하였으나...
계속 mapper를 주입받지 못하기 때문에
스프링의 IoC 컨테이너에 올려주는 것으로 전략을 바꾸었다.
1. 초기 버전 -- mapper 주입 안됨 (아마 static이라서 그런것으로 보인다...)
@Component
public class VoUtil {
private VoUtil() { }
// 싱글턴
private static class LazyHolder {
public static final VoUtil INSTANCE = new VoUtil();
public final static void setProperty(BoardMapper _mapper) {
mapper = _mapper;
}
}
public static VoUtil getInstance(BoardMapper _mapper) {
System.out.println("VoUtil mapper: " +_mapper);
LazyHolder.setProperty(_mapper);
return LazyHolder.INSTANCE;
}
public static VoUtil getInstance() {
return LazyHolder.INSTANCE;
}
public BoardMapper returnMapper() {
return mapper;
}
...
public 메서드 () { ... }
}
구현부
if(!existMapper) {
VoUtil.getInstance(mapper);
existMapper = true;
}
호출부에서도 이렇게 처리해야 한다... (existMapper는 플래그변수)
2. 싱글턴 방식으로 객체 주입
@Component
public class VoUtil {
// private VoUtil() { }
@Inject
public BoardMapper mapper;
...
}
.....와 확실히 스프링의 방식을 쓰는 것이 간결하다. ㅠㅠ