🌟 스프링의 핵심을 담당하는 건 ApplicationContext(Bean Factory)
🌟 IoC = Inversion of Control(제어의 역전)
Bean
: 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트Bean Factory
: 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트 Application Context
: 빈 팩토리를 확장한 IoC 엔진, IoC의 방식을 따라 만들어진 일종의 빈 팩토리Application Context
는 별도로 설정정보를 담고 있는 무언가를 가져와 활용하는 IoC엔진import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
// 스프링이 빈 팩토리를 위한 오브젝트 설정을 담당하는 클래스라고 인식할 수 있게 해주는 어노테이션
@Configuration
public class DaoFactory {
// 오브젝트 생성을 담당하는 IoC용 메서드라는 표시
// 메서드 이름은 Bean의 이름이 된다.
@Bean
public UserDao userDao() {
return new UserDao(connectionMaker());
}
@Bean
public ConnectionMaker connectionMaker() {
return new DConnectionMaker();
}
}
public class UserDaoTest {
@Test
public UserDaoTest() {
ApplicationContext context
= new AnnotationConfigApplicationContext(DaoFactory.class);
UserDao userDao = context.getBean("userDao", UserDao.class);//userDa
o는 ApplicationContext에 등록된 빈의 이름이 됨
}
}
➡️ 애플리케이션 컨텍스트가 동작하는 방식
종합 IoC 서비스
를 제공다양한 제어 기능 제공
: 오브젝트 생성 방식-시점-전략 각각 다르게 결정, 자동생성, 오브젝트에 대한 후처리, 정보의 조합, 설정 방식의 다변화 등빈을 검색하는 다양한 방법
을 제공이름으로 검색
, 타입으로 검색
, 애노테이션으로 검색