You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Borut BolĨina <bo...@gmail.com> on 2012/01/06 15:34:23 UTC
Field versus constructor parameter injection
Hi,
I am exploring the possibilities of injecting Symbols into my service.
While this works:
public class RestEasyClientImpl implements RestEasyClient {
private Logger logger;
private Integer configurationServiceConnectionTimeoutMillis;
private Integer configurationServiceSocketTimeoutMillis;
public RestEasyClientImpl(Logger logger,
@Symbol("configuration.service.connectionTimeoutMillis")
Integer configurationServiceConnectionTimeoutMillis,
@Symbol("configuration.service.socketTimeoutMillis") Integer
configurationServiceSocketTimeoutMillis) {
this.logger = logger;
this.configurationServiceConnectionTimeoutMillis =
configurationServiceConnectionTimeoutMillis;
this.configurationServiceSocketTimeoutMillis =
configurationServiceSocketTimeoutMillis;
...
}
this doesn't:
public class RestEasyClientImpl implements RestEasyClient {
private Logger logger;
@Symbol("configuration.service.connectionTimeoutMillis")
private Integer configurationServiceConnectionTimeoutMillis;
@Symbol("configuration.service.socketTimeoutMillis")
private Integer configurationServiceSocketTimeoutMillis;
public RestEasyClientImpl(Logger logger) {
this.logger = logger;
logger.info("configuration.service.connectionTimeoutMillis: {}",
configurationServiceConnectionTimeoutMillis);
logger.info("configuration.service.socketTimeoutMillis: {}",
configurationServiceSocketTimeoutMillis);
...
}
Both configurationServiceConnectionTimeoutMillis and
configurationServiceSocketTimeoutMillis are null in this second case of
symbol field injection.
I would like to use the second approach becouse it is cleaner, it doesn't
clutter the method/constructor parameter list.
Is there a way of injecting symbol values into fields of the service or is
the constructor injection point my only option? Does this
http://tapestry.apache.org/defining-tapestry-ioc-services.html (Field
injection) apply for Symbols too, therefore "I am doomed"?
-borut