Yes, Try:

@Inject
@Symbol("configuration.service.connectionTimeoutMillis") 
private Integer configurationServiceConnectionTimeoutMillis; 

2012-01-06



DH



发件人:Borut Bolčina
发送时间:2012-01-06 22:35
主题:Field versus constructor parameter injection
收件人:List Tapestry User
抄送:

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 

Reply via email to