I am still confused the way Struts2 internal DI and container.getInstance()
working
since i have this inside my class
private Class provider;
public void setProvider( Class<? extends Provider> provider)
{
this.provider = provider;
}
So if at run time i want to inject my provider, so i will be declaring a
constant for my plugin say
<constant name="provider.name' value="com.abc.MyCustomProvider">
so i believe now i have to do the following steps
1. Get an instance of the provider based on the constant name
2. Init my provider with the instance i got from Struts2 DI
so i guess i need to do this either in init method or my bean constructor
init(){
setProvider(container.getInstance(Provider.class,"provider.name"));
}
but above will not work ,since as per the getInstance() method
signature <T>T getInstance
(Class<T> type, String name)
i will getting instance of Provider class and which means either i have to
change the signature of public void setProvider( Class<? extends Provider>
provider)
which means loosing the generics capability as my intentions are to inject
any class which extends Provider.
i am all confused here and not sure what exact is to do, nor i want to add
any further dependencies.
Any suggestion as how to achieve this?
Thanks
On Mon, Oct 1, 2012 at 6:09 PM, Lukasz Lenart <[email protected]>wrote:
> 2012/10/1 Aum Strut <[email protected]>:
> > i was thinking about a way like Spring DI used to do something like
> >
> > <bean type="com.foo.MyInterface" class="com.foo.MyImpl1" name="impl1" >
> > <property name="a" value="Run time class"/>
> > </bean>
> >
> > It would be more convient to have injection like this way.
>
> Just annotate your setter with @Inject(name="a") and create constant
> in struts.xml. If "a" is a String value.
>
>
> Regards
> --
> Ćukasz
> + 48 606 323 122 http://www.lenart.org.pl/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>