Spring Core 1
1. Spring Bean
스프링은 애플리케이션의 복잡성을 줄이고 유지보수를 용이하게 하기 위해 객체의 생성, 설정 및 생명주기를 관리하는 스프링 컨테이너를 제공합니다. 이 컨테이너가 관리하는 객체를 스프링 빈이라고 하며, 이를 통해 의존성 주입 및 객체 관리가 자동화됩니다.
1.1. Bean Registration
스프링에서 빈을 등록하는 방법은 다양한데, 그 중 애너테이션을 이용한 방법으로 클래스에 @Component
어노테이션을 추가하는 방법이 있습니다.
@Component
public class SpringBean {
}
학습 테스트
- 테스트 메서드:
cholog.BeanTest.registerBean
- 수행 방법
cholog.bean.SpringBean
클래스를 이용하여 학습 테스트를 성공시키세요.
1.2 Bean Autowiring
스프링 컨테이너에 등록된 객체는 매번 새로이 생성할 필요없이 컨테이너에서 가져와서 사용할 수 있습니다.
@Autowired
private SpringBean springBean;
학습 테스트
- 테스트 메서드:
cholog.BeanTest.autowiredBean
- 수행 방법
cholog.bean.AutowiredBean
클래스를 이용하여 학습 테스트를 성공시키세요.
2. Dependency Injection
스프링 컨테이너에 등록된 스프링 빈 간의 의존성을 관리하는 방법은 다양합니다.
그 중 애너테이션을 이용한 방법으로 생성자, 세터, 필드에 @Autowired
어노테이션을 추가하는 방법이 있습니다.
2.1. Constructor Injection
스프링 컨테이너에 등록된 스프링 빈 간의 의존성을 생성자를 통해 주입하는 방법입니다.
private InjectionBean injectionBean;
public ConstructorInjection(InjectionBean injectionBean) {
this.injectionBean = injectionBean;
}
학습 테스트
- 테스트 메서드:
cholog.DependencyInjectionTest.constructorInjection
- 수행 방법
cholog.di.ConstructorInjection
클래스를 이용하여 학습 테스트를 성공시키세요.
2.2. Setter Injection
스프링 컨테이너에 등록된 스프링 빈 간의 의존성을 세터를 통해 주입하는 방법입니다.
private InjectionBean injectionBean;
@Autowired
public void setInjectionBean(InjectionBean injectionBean) {
this.injectionBean = injectionBean;
}
학습 테스트
- 테스트 메서드:
cholog.DependencyInjectionTest.setterInjection
- 수행 방법
cholog.di.SetterInjection
클래스를 이용하여 학습 테스트를 성공시키세요.
2.3. Field Injection
스프링 컨테이너에 등록된 스프링 빈 간의 의존성을 필드를 통해 주입하는 방법입니다.
@Autowired
private InjectionBean injectionBean;
학습 테스트
- 테스트 메서드:
cholog.DependencyInjectionTest.autowiredInjection
- 수행 방법
cholog.di.FieldInjection
클래스를 이용하여 학습 테스트를 성공시키세요.
3. Component Scan
스프링 컨테이너에 등록된 스프링 빈을 자동으로 찾아서 등록하는 방법입니다.
3.1. @ComponentScan
@ComponentScan
어노테이션을 이용하여 스캔할 패키지를 지정할 수 있습니다.
앞서 수행한 학습 테스트에서 @ComponentScan
을 사용하지 않고도 정상동작했던 이유는 @SpringBootApplication
이 @ComponentScan
을 포함하고 있기 때문입니다.
...
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
}
학습 테스트
- 테스트 메서드:
cholog.ComponentScanTest.scanComponent
- 수행 방법
cholog.scan.ContextConfiguration
클래스를 이용하여 학습 테스트를 성공시키세요.