본문 바로가기
Spring

Spring 빈이 아닌 클래스에서 빈 얻기

by 수앙 2022. 8. 3.

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

댓글