我是CDI的新手,希望有人可以帮助我。
好吧,让我解释一下问题:
我实现了一个由JSF EL调用的主bean。该bean处理对象列表。想象一下像List<Car>
这样的东西。
这些car对象是在主bean的@PostMethod方法中构造的
另外,我有一些服务类,例如CarServices提供类似public static List<Car> getCarsOfBrand(Session session, Brand brand)
的内容。
在服务类中,Hibernate会话用于运行查询并返回应得列表
所以,好吧......我想摆脱传递会话对象。所以我的计划是注入它。
我创建了一个SessionScoped bean&#34; PersistenceUnit&#34; (可能是该名称已经预先分配,对不起......)使用方法public Session getCurrentSession()
。
我只想在我的所有Service类中注入这个bean,只需调用getCarsOfBrand(Brand brand)
之类的东西。
问题是,我无法将CDI bean注入非bean。 (汽车目前只是一个POJO)。
我试图通过添加@SessionScoped将汽车声明为CDI bean来处理这个问题。
但接下来的问题是,Car对象是由我而不是Container实例化的。
我试过像
@Produces
public Car createCar() {
return new Car();
}
但这也没有成功:我认为这个带注释的方法会返回汽车的代理。但什么都没发生。汽车内部的注入场仍为空,其@PostConstruct方法也从未被调用过。
你能帮助我吗?将当前上下文(会话)注入我的服务类的正确方法是什么?谢谢! :-)
答案 0 :(得分:1)
所以,我自己找到了解决方案! : - )
我将服务类注释为@ApplicationScoped并注入我需要的任何东西。 Car-Class使用该服务但不是bean本身。 为此我在实例化对象时使用DeltaSpike作为注入:
WITH
SET [XL3WithSet0] AS
{
(
[Measures].[Original Exposure Amount - Drilldown]
,[ExpPortfolioType].[ExposurePortfolioType].[All].[COREP - CRD IV].[Standardised]
,[PortfolioType].[PortfolioType].[All]
,[CRMGroup].[CRMGroup].[All]
,[CCFBand].[Hierarchy].[All]
,[DrilldownCreditRisk].[InflowOutflowFlag].[All]
)
}
...**********another 25 sets combining [Measures] AND selected dimensions*****
SELECT
{
[XL3WithSet0]
,[XL3WithSet1]
,[XL3WithSet2]
,[XL3WithSet3]
,[XL3WithSet4]
,[XL3WithSet5]
,[XL3WithSet6]
,[XL3WithSet7]
,[XL3WithSet8]
,[XL3WithSet9]
,[XL3WithSet10]
,[XL3WithSet11]
,[XL3WithSet12]
,[XL3WithSet13]
,[XL3WithSet14]
,[XL3WithSet15]
,[XL3WithSet16]
,[XL3WithSet17]
,[XL3WithSet18]
,[XL3WithSet19]
,[XL3WithSet20]
,[XL3WithSet21]
,[XL3WithSet22]
,[XL3WithSet23]
,[XL3WithSet24]
,[XL3WithSet25]
} ON COLUMNS
--Non Empty
,{
[DrilldownCreditRisk].[ExposureDrilldown].[All].[Legal Entity 2].[CBRC Repo style MarketParticipant 40089].[Exp No. 14660042].[UNSECURED].[Unsecured - Undrawn Tranche]
,[DrilldownCreditRisk].[ExposureDrilldown].[All].[Legal Entity 2].[CBRC Repo style MarketParticipant 40089].[Exp No. 14660042].[UNSECURED].[Unsecured - Drawn Tranche]
} ON ROWS
FROM [COREP Credit Risk]
WHERE
(
[Time].[Time].[All]
,[Scenario].[Scenario].[All]
,[ConsolidationProfile].[ConsolidationProfile].[All]
,[ExposureType].[ExposureType].[All].[COREP Reporting - CRD IV]
,[IntragroupFlag].[IntragroupFlag].[All]
)
CELL PROPERTIES VALUE;
希望将来可以帮助别人! : - )