I think it would be something nice to have. For example, Spring does this via
@Configurable, backed by AspectJ.
I think that exploring bytecode instrumentation would be interesting for Weld,and I have
for some time considered the possibility of using it as an option for
interception/decoration as well.
Regarding javaagent: for certain classloaders that support instrumentation and registering
a ClassFileTransformer directly, we may forgo using a javaagent altogether and register
the transformer during the bootstrap process. In the least, this would possible with
Tomcat, Glassfish(partly) and JBoss.
On 2010-11-14, at 5:35 PM, Stuart Douglas wrote:
I just had an idea for something that I think would be rather cool,
and allow objects created using new to be injected automatically.
Conceptually it would look something like this:
@AutoInject
public class AccountService
{
private final Account account;
@Inject
private PaymentProcessor paymentProcessor;
AccountService(Account account)
{
this.account = account;
}
public void doPayment(double amount)
{
paymentProcessor.processPayment(account, amount);
}
}
We could then create the object using new and the fields will still be injected:
AccountService a = new AccountService(account);
a.doPayment(10);
To implement this will require a javaagent, which will modify the
bytecode of @AutoInject annotated classes as they are loaded, so that
the constructor bytecode looks up the values to inject and sets the
injected field values appropriately. Would this be something that is
worth putting into weld extensions?
Stuart
_______________________________________________
weld-dev mailing list
weld-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/weld-dev