저는 스프링 프레임 워크 의존성 주입과 물건에 익숙해 져서 JBoss에서는 정말 초록색입니다. 나는 불가능한 일을하고 싶을지도 모른다.wildfly에서 종속 CDI를 사용할 수 있습니까?
우리 회사에서 우리는 모든 의존성 주입이있는 프로토 타입으로 시작했습니다. 우리는 하나 개의 클래스가 이런 식으로 선언이 :
@ApplicationScoped
public class MessageHandlerImpl implements MessageHandler {
...
}
을하고이 같은 다른 클래스에 주입 :
@ApplicationScoped
public class MessageReceiverImpl implements MessageReceiver {
@Inject
MessageHandler messageHandler;
...
}
프로토 타입은 받아 들여졌다 이제 우리는 핵심에 몇 가지 일반적인 코드를 분리이 프로젝트를 조직하고 계획.
우리가 그것을 분리 할 때까지 그 주입은 잘 작동하고있었습니다. 이 문제에 대한 자세한 내용은 다음 질문에 대한 질문을 받았습니다 : Ambiguous dependency with only one @ApplicationScoped class
나는 한 걸음 뒤로 물러서서 내가하고있는 일이 어쩌면 야생의 떼를 쓸 수 없거나 내가 시도한 전체 개념이 잘못되었다고 생각하고 있습니다. .
내가하고 싶은 것은 CDI를 내 핵심 프로젝트에서 수행하고 종속 프로젝트의 @Inject 주석과 함께 사용하는 것입니다. 당신은 내가 링크 된 질문에서 볼 수 있듯이 내가 모호한 종속성을 얻을 수 있기 때문에 작동하지 않습니다
@ApplicationScoped
public class WSClient {
@Inject
MessageReceiver messageReceiver;
...
}
음 : 그래서 내 의존 프로젝트에서 내가 좋아하는 뭔가를 할 것입니다. 내가해야 할 일은 프로듀서 같은 것을 사용하는 것이 아닌지 궁금합니다. 누구든지이 접근법이나 대안에 대한 올바른 접근법을 가르쳐 줄 수 있습니까?
프로듀서는 특정 유형을 가능한 다양한 방법으로 인스턴스화 한 다음 "이 유형을 주입하는 경우이 유형을 주입하면이 인스턴스를 제공합니다"라는 CDI에 넘겨주고 싶을 때 사용됩니다 (매우 단순화 된 ofc) . 그래서 평범한 주사만으로 충분할 것입니다. 제작자가 필요 없다는 것을 알 수 있습니다. 실제로 작동하지만 클래스가 어딘가에 두 번로드되어 있어야 함을 의미하는 모호한 점이 있습니다. 그 방향으로 계속 파고 들어야합니다. – Siliarus
@Siliarus 나는 그것에 대해 연구 중이다. 당신의 의견을 많이 주셔서 고마워요, 당신이 생산자에 대해 말한 것을 이해했습니다, 지금 나에게 더 분명합니다. 건축의 관점에서 보면 어떨까요? 필자의 핵심 CDI 주석을 기술적으로 특정하게 만드는 것은 나쁘지 않은가? JBoss의 우수 사례가 무엇인지 전혀 모르겠습니다. – BrenoQ
코어가 분리되어 있으면 완벽하게 괜찮습니다. 그런 식으로 CDI를 사용할 수 있습니다. 그것은 매우 일반적입니다. 모든 분리 된 JAR 파일이 빈 아카이브 (예 :'bean '을 포함하는 것이 가장 간단한 방법)인지 확인하십시오.xml') - 나는 당신이 가지고 있다고 추정한다. 그렇지 않으면 그 콩들은 발견되지 않을 것이다. – Siliarus