[cdi-dev] @New and producer methods/fields
Mark Struberg
struberg at yahoo.de
Sun Sep 25 16:10:22 EDT 2011
As explained below: in every case where you need a producer method to create a useful bean, then @New just doesn't work.
My usecase was that I would have needed one of those EntityManagers for unit tests. And since unit tests are no CDI managed beans thus cannot use @Transactional, I wanted to just create a manually managed contextual instance.
@New currently is basically only useful for creating new instances of a class (which must not even be a managed bean but vetoed...).
LieGrue,
strub
----- Original Message -----
> From: Pete Muir <pmuir at redhat.com>
> To: Mark Struberg <struberg at yahoo.de>
> Cc: "cdi-dev at lists.jboss.org" <cdi-dev at lists.jboss.org>
> Sent: Sunday, September 25, 2011 9:56 PM
> Subject: Re: [cdi-dev] @New and producer methods/fields
>
> Section 3.12 states "For each managed bean, and for each session bean, a
> second bean exists which:"
>
> So, there are no @New beans for producers.
>
> What is the use case you are trying to address?
>
> On 24 Sep 2011, at 11:35, Mark Struberg wrote:
>
>> Hi folks!
>>
>> We recently talked about ways to properly destroy beans which got created
> via Instance or @New.
>> I just realized that only having
>> @Inject @New MyClass dings;
>> might not be enough.
>>
>> Imagine you have 2 producer methods which create EntityManagers
>>
>> public class EntityManagerProducer {
>> @Produces @RequestScoped @UserDb
>> public void createUserDbEm() {
>> return
> entityManagerFactory.createEntityManager("userdb");
>> }
>>
>> @Produces @RequestScoped @AdminDb
>> public void createAdminDbEm() {
>> return
> entityManagerFactory.createEntityManager("admindb");
>> }
>> }
>>
>> If I need a 'temporarily self managed' userdb EntityManager, I
> cannot just
>> type
>> @Inject @New @UserDb EntityManager userDbEm;
>> because according to the spec there is only 1 Bean with exactly @New (and
> none with additional @UserDb)
>> The @New is basically useless for producer methods, isn't?
>>
>> Do we like to address this somehow?
>>
>> LieGrie,
>> strub
>>
>>
>> _______________________________________________
>> cdi-dev mailing list
>> cdi-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>
More information about the cdi-dev
mailing list