如何使用xml配置构造以下bean?

时间:2015-12-01 19:51:19

标签: java spring

如何使用xml配置构造以下bean?

@Configuration
public class RestConfig {
    @Bean
    public ResteasyClient restClient() {
        return new ResteasyClientBuilder()
                .establishConnectionTimeout(connectionTimeout, TimeUnit.SECONDS)
                .socketTimeout(socketTimeout, TimeUnit.SECONDS)
                .build();
    }
}

1 个答案:

答案 0 :(得分:1)

您可以尝试实施FactoryBean界面:

public class ResteasyClientFactoryBean implements FactoryBean<ResteasyClient>{

    private int connectionTimeout;
    private int socketTimeout;


    public ResteasyClient getObject() throws Exception {
        return new ResteasyClientBuilder()
                    .establishConnectionTimeout(connectionTimeout, TimeUnit.SECONDS)
                    .socketTimeout(socketTimeout, TimeUnit.SECONDS)
                    .build();;
    }

    public Class<? extends ResteasyClient> getObjectType() {
        return ResteasyClient.class;
    }

    public boolean isSingleton() {
        return true;
    }

    public void setConnectionTimeout(int connectionTimeout) {
        this.connectionTimeout = connectionTimeout;
    }

    public void setSocketTimeout(int socketTimeout) {
        this.socketTimeout = socketTimeout;
    }
}

并在bean定义后添加配置:

<beans ..."> 
   <bean name="myResteasyClient" class="ResteasyClientFactoryBean">
       <property name="connectionTimeout" value="xxx"/>
       <property name="socketTimeout" value="xxx"/>
   </bean>
</beans>

然后你可以将这个bean注入另一个bean,它将被解析为ResteasyClient实例。