Spring에서 제공하는 ConfigurableListableBeanFactory 클래스를 이용하여 동적으로 빈 등록이 가능하다.
동적 생성할 클래스 선언
public class DynamicClass {
// 빈 등록시 생성자 호출여부 확인용
public DynamicClass() {
System.out.println("생성자 호출!");
}
public void func(){
System.out.println("Test");
}
}
테스트 코드를 통한 동적 빈 생성 및 조회
@SpringBootTest
public class DynamicClassTest {
@Test
void test(){
StaticApplicationContext staticApplicationContext = new StaticApplicationContext();
// 등록 전 빈 조회
String[] beforeBeans = staticApplicationContext.getBeanNamesForType(DynamicClass.class);
assertTrue(beforeBeans.length == 0);
// 빈 등록
ConfigurableListableBeanFactory beanFactory = staticApplicationContext.getBeanFactory();
beanFactory.registerSingleton("dynamicClass", new DynamicClass());
// 등록한 빈 조회 (by type)
String[] afterBeans = staticApplicationContext.getBeanNamesForType(DynamicClass.class);
assertTrue(afterBeans.length > 0);
for (String beanName : afterBeans) {
System.out.println(beanName);
}
// 등록한 빈 조회 (by bean name)
Object dynamicClass = staticApplicationContext.getBean("dynamicClass");
assertNotNull(dynamicClass);
assertTrue(dynamicClass instanceof DynamicClass);
}
}
실행 결과
'SpringFramework > Spring' 카테고리의 다른 글
추상클래스를 사용한 통합 배치 관리 프로그램 (0) | 2021.07.06 |
---|---|
Cron 정규식 검사 (0) | 2021.07.06 |
String 중괄호 매핑 함수 (log.info 대신 사용) (0) | 2021.07.06 |
Spring Boot 어플리케이션 설정 공식 문서 (0) | 2021.05.04 |
SpringBoot CORS (WebMvcConfigurer 사용) 적용 방법 (0) | 2021.04.13 |