Spring 에서 간혹
@Component, @Controller, @Service, @Repository, @Bean 선언이 안된
일반클래스에서 스프링 빈을 가져와야 할 때가 있다.
여러가지 방식이 있겠으나 여기서는 그 중 하나의 방법으로 처리함.
1. 빈을 얻을 수 있는 클래스 선언
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class ApplicationContextProvider implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ApplicationContextProvider.applicationContext = applicationContext;
}
public static <T> T getBean(String name, Class<T> requiredType) {
return applicationContext.getBean(name, requiredType);
}
}
2. 스프링 빈 클래스
@Component
public class SampleBean {
public void runBean() {
System.out.println("Run bean.");
}
}
3. 스프링 빈을 얻는 일반클래스
public class SampleClass {
public void runClass() {
SampleBean sampleBean = ApplicationContextProvider.getBean("sampleBean", SampleBean.class);
System.out.println("Get bean -> " + sampleBean);
sampleBean.runBean();
}
}
끝.
'Spring' 카테고리의 다른 글
Spring AOP (0) | 2023.03.11 |
---|---|
Spring boot p6spy 적용 (1) | 2021.01.07 |
Spring batch chunk 동작 방식 (0) | 2020.11.05 |
Spring 4 interceptor custom annotation (0) | 2019.11.13 |
Spring 4 request logging (0) | 2019.11.07 |
댓글