spring / / 2023. 1. 11. 07:59

Spring boot Bean 이름으로 lazy 설정하기

Spring Boot 기동 시 Bean을 lazy하게 설정하려면 application.yml에 아래와 같이 설정하면 된다.

spring:
  main:
    lazy-initialization: true

하지만 특정 Bean의 경우 즉시(eager) 로딩되어야 할 경우가 있기 때문에 선택적으로 설정할 필요가 있다.
그럴 경우 아래와 같이 Bean의 이름으로 특정 Bean만 lazy로 설정할 수 있다.

    @Bean
    public static BeanFactoryPostProcessor beanFactoryPostProcessor() {
        return beanFactory ->
            Arrays.stream(beanFactory.getBeanDefinitionNames())
                .filter(LazyBeanConfig::filterLazyInit)
                .forEach(beanName -> beanFactory.getBeanDefinition(beanName).setLazyInit(true));
    }

    private static boolean filterLazyInit(String beanName) {
        if (beanName.endsWith("빈 이름")) {
            return false;
        } else {
            return true;
        }
    }
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유