반응형
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 |