반응형

BeanFactory

설명

  • Spring DI Container가 관리하는 객체를 Bean이라고 부른다.
  • Bean을 관리한다는 의미로 Spring DI Container를 BeanFactory라고 부르기도 한다.
  • BeanFactory는 Bean의 등록, 생성, 조회(getBean())등의 기능을 지원한다.
  • getBean() 호출시 해당 Bean 객체를 생성하는 lazy-loading 방식으로 작동한다.

예제

  • TestService.java
    public class TestService {
        public TestService() {
            System.out.println("TestService 객체 생성");
        }
    
        public void test() {
            System.out.println("TestService 코드 실행");
        }
    }
    
  • ~/src/main/resources/application.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean class="TestService"/>
    </beans>
    
  • SpringApplication.java
    public class SpringApplication {
        public static void main(String[] args) {
            System.out.println("BeanFactory 생성 전");
    
            BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("application.xml"));
    
            System.out.println("BeanFactory 생성 후");
    
            TestService testService = beanFactory.getBean(TestService.class);
            testService.test();
        }
    }
    
  • 출력 결과
    BeanFactory 생성 전
    BeanFactory 생성 후
    TestService 객체 생성
    TestService 코드 실행
    

ApplicationContext

설명

  • BeanFactory를 상속 받고 있어 BeanFactory의 기본 기능을 모두 지원한다.
  • ApplicationContext 생성시 Bean 객체를 모두 생성하는 pre-loading 방식으로 동작한다.
  • BeanFactory보다 ApplicationContext 사용을 권장하는 추세

예제

  • TestService.java
    public class TestService {
        public TestService() {
            System.out.println("TestService 객체 생성");
        }
    
        public void test() {
            System.out.println("TestService 코드 실행");
        }
    }
    
  • ApplicationConfig.java
    @Configuration
    public class ApplicationConfig {
        @Bean
        public TestService testService() {
            return new TestService();
        }
    }
    
  • SpringApplication.java
    public class SpringApplication {
        public static void main(String[] args) {
            System.out.println("BeanFactory 생성 전");
    
            BeanFactory beanFactory = new AnnotationConfigApplicationContext(ApplicationConfig.class);
    
            System.out.println("BeanFactory 생성 후");
    
            TestService testService = beanFactory.getBean(TestService.class);
            testService.test();
        }
    }
    
  • 출력 결과
    BeanFactory 생성 전
    TestService 객체 생성
    BeanFactory 생성 후
    TestService 코드 실행
    

참고

반응형

'Development > Spring' 카테고리의 다른 글

[Spring] Filter & Interceptor  (0) 2020.12.27
[Spring] Validation  (0) 2020.12.27
[Spring] Paging  (0) 2020.12.27
[Spring] FileDownload  (0) 2020.12.27
[Spring] Spock Test  (0) 2020.12.27

+ Recent posts