7.2. 자카르타 컨텍스트 및 종속성 주입을 사용하여 애플리케이션 개발

Jakarta Contexts and Dependency Injection을 사용하면 애플리케이션 개발, 코드 재사용, 배포 또는 런타임 시 코드 조정, 장치 테스트 등의 상당한 유연성을 확보할 수 있습니다.

애플리케이션 개발을 위한 특수 모드가 함께 제공됩니다. 활성화된 경우 Jakarta Contexts 및 Dependency Injection 애플리케이션의 개발을 용이하게 하는 특정 기본 제공 툴을 사용할 수 있습니다.

참고

개발 모드는 애플리케이션 성능에 부정적인 영향을 줄 수 있으므로 프로덕션에서 사용해서는 안 됩니다. 프로덕션에 배포하기 전에 개발 모드를 비활성화해야 합니다.

웹 애플리케이션의 개발 모드 활성화:

웹 애플리케이션의 경우 서블릿 초기화 매개 변수 org.jboss.firmd.developmenttrue로 설정합니다.

<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 주석은 주석을 정의하는 빈입니다.