7.2. 자카르타 컨텍스트 및 종속성 주입을 사용하여 애플리케이션 개발
Jakarta Contexts and Dependency Injection을 사용하면 애플리케이션 개발, 코드 재사용, 배포 또는 런타임 시 코드 조정, 장치 테스트 등의 상당한 유연성을 확보할 수 있습니다.
애플리케이션 개발을 위한 특수 모드가 함께 제공됩니다. 활성화된 경우 Jakarta Contexts 및 Dependency Injection 애플리케이션의 개발을 용이하게 하는 특정 기본 제공 툴을 사용할 수 있습니다.
개발 모드는 애플리케이션 성능에 부정적인 영향을 줄 수 있으므로 프로덕션에서 사용해서는 안 됩니다. 프로덕션에 배포하기 전에 개발 모드를 비활성화해야 합니다.
웹 애플리케이션의 개발 모드 활성화:
웹 애플리케이션의 경우 서블릿 초기화 매개 변수 org.jboss.firmd.development 를 true로 설정합니다.
<web-app>
<context-param>
<param-name>org.jboss.weld.development</param-name>
<param-value>true</param-value>
</context-param>
</web-app>관리 CLI를 사용하여 JBoss EAP에 대한 개발 모드 활성화:
development -mode 특성을 모드를 전역적으로 활성화할 수 있습니다.
true 로 설정하여 배포된 모든 애플리케이션에 대해 Weld 개발
/subsystem=weld:write-attribute(name=development-mode,value=true)
7.2.1. 기본 빈 검색 모드
빈 아카이브의 기본 빈 검색 모드는 주석이 추가됩니다. 이러한 빈 아카이브는 암시적 빈 아카이브 라고 합니다.
빈 검색 모드에 주석이 추가되면 다음을 수행합니다.
-
주석 정의가 없고 세션 빈의 빈 클래스가 아닌 빈 클래스는 검색되지 않습니다. - 세션 빈에 없고 빈 클래스에 빈 정의 주석이 없는 생산자 메서드는 검색되지 않습니다.
- 세션 빈에 없고 빈 클래스에 빈 정의 주석이 없는 생산자 필드가 검색되지 않습니다.
- 세션 빈에 없고 빈 클래스에 빈 정의 주석이 없는 Disposer 메서드는 검색되지 않습니다.
- 세션 빈에 없고 빈 클래스에 빈 정의 주석이 없는 관찰자 메서드는 검색되지 않습니다.
Contexts 및 Dependency Injection 섹션의 모든 예제는 검색 모드가 all 으로 설정된 경우에만 유효합니다.
주석 정의 빈
빈 클래스에는 빈을 정의하여 빈 아카이브에 정의된 대로 애플리케이션의 모든 위치에 배치할 수 있습니다. 주석을 정의하는 빈 클래스는 암시적 빈 빈이라고 합니다.
주석을 정의하는 빈 세트에는 다음이 포함됩니다.
-
@ApplicationScoped,@SessionScoped,@ConversationScoped및@RequestScoped주석. - 기타 모든 일반 범위 유형.
-
@interceptor및@Decorator주석. -
모든 주석, 즉
@Stereotype으로 주석이 달립니다. -
@Dependent범위 주석입니다.
이러한 주석 중 하나가 빈 클래스에 선언되면 빈 클래스에 빈이 주석이 있다고 합니다.
예제: 빈에서 주석 정의
@Dependent
public class BookShop
extends Business
implements Shop<Book> {
...
}
다른 JSR-330 구현 및 Jakarta Contexts 및 Dependency Injection 사양과의 호환성을 보장하기 위해 @Dependent 를 제외한 모든 의사 범위 주석은 주석을 정의하는 빈이 아닙니다. 그러나 pseudo-scope 주석을 포함한 parenttype 주석은 주석을 정의하는 빈입니다.