Jakarta Contexts and Dependency injection (CDI)
CDI 규격은 2009년 12월에 Java EE 6 플랫폼에 도입되어 지금은 Jakarta Contexts and Dependency Injection이라고 부르게되었습니다. CDI는 규격이고, 인터페이스이며, 구현이 없고 Spring Framework에서 CDI를 구현합니다.
CDI에서 중요한 API 어노테이션
- Inject (~ 스프링의 AutoWired와 비슷함)
- Named (~ 스프링의 Component와 비슷)
- Qualifier
- Scope
- Singleton
- etc..
예시 코드
//@Component
@Named
class BussinessService {
private DataService dataService;
//@Autowired
@Inject
public void setDataService(DataService dataService) {
System.out.println("Setter Injection");
this.dataService = dataService;
}
public DataService getDataService() {
return dataService;
}
}
//@Component
@Named
class DataService {
}
@Configuration
@ComponentScan
public class CdiContextLuncherApplication {
public static void main(String[] args) {
try (var context =
new AnnotationConfigApplicationContext
(CdiContextLuncherApplication.class))
{
Arrays.stream(context.getBeanDefinitionNames())
.forEach(System.out::println);
System.out.println(context.getBean(BussinessService.class)
.getDataService());
}
}
}
출력
Setter Injection
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
cdiContextLuncherApplication
bussinessService
dataService
com.in28minutes.learnspringframework.examples.g1.DataService@485966cc
'코딩 공부 > web & Java' 카테고리의 다른 글
[Spring] 스테레오 타입 어노테이션 (0) | 2023.10.09 |
---|---|
[Spring] Spring XML 설정 (1) | 2023.10.09 |
[Java] Java EE, J2EE, Jakarta EE (1) | 2023.10.06 |
[Spring] @PostConstruct와 @PreDestroy (1) | 2023.10.06 |
[Spring] Bean 스코프 (0) | 2023.10.05 |