본문 바로가기
IT/Spring

static 으로 Bean 주입

by 봉즙 2023. 2. 28.

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

댓글