Bean이 아닌 클래스에서 Bean을 주입이 필요한 경우 사용한다.
static 메서드나 new 를 사용하여 생성한 인스턴스에서 Bean을 해야하는 경우가 그 예다.
ApplicationContextAware
ApplicationContextAware
인터페이스를 구현 한다.
applicationContext 를 이용해 bean을 가져올 클래스를 정의하고 사용하면 된다.
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class ApplicationContextProvider implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(final ApplicationContext applicationContext) {
context = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return context;
}
}
@UtilityClass
public class ApplicationContextUtils {
public static <T> @NotNull T getBean(final Class<T> type) {
final ApplicationContext applicationContext = ApplicationContextProvider.getApplicationContext();
return applicationContext.getBean(type);
}
}
사용 예제
@Service
public class TestService {
public void test() {
System.out.println("Hello");
}
}
public class StaticTest {
public static check() {
final Test test = ApplicationContextUtils.getBean(TestService.class).test(properties);
}
}
'IT > Spring' 카테고리의 다른 글
security 6.1 마이그레이션 (1) | 2023.05.19 |
---|---|
Base64Utils Deprecated (0) | 2023.02.28 |
response null 인경우 생략 (0) | 2023.02.28 |
bucket4j (3) | 2023.02.28 |
2023-01-18-aop 사용한 로깅 (0) | 2023.02.28 |
댓글