Client(Object) をコードに挿入できるように、次のコードを spring.xml の Client Bean に作成するにはどうすればよいですか? エラスティック検索からデータを取得するようにこの Bean を構成しています。
Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300));
Client(Object) をコードに挿入できるように、次のコードを spring.xml の Client Bean に作成するにはどうすればよいですか? エラスティック検索からデータを取得するようにこの Bean を構成しています。
Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300));
クライアント Bean を公開できるようにし、Spring アプリケーション コンテキストで Bean として簡単に構成できる Spring FactoryBean を作成します。例えば
public class ClientFactoryBean implements FactoryBean<Client>{
private String ipAddress;
private int port;
public Class<?> getObjectType(){
return Client.class;
}
public boolean isSingleton(){
return true;
}
public void setPort(int port){
this.port = port;
}
public void setIpAddress(String ipAddress){
this.ipAddress = ipAddress;
}
public Client getObject(){
return new TransportClient().addTransportAddress(new InetSocketTransportAddress(ipAddress,port));
}
}
次に、アプリケーション コンテキスト ファイルで
<bean id="client" class="some.package.ClientFactoryBean">
<property name="ipAddress" value="192.168.0.198"/>
<propert name="port" value="9300"/>
</bean>
その後、通常どおりクライアント Bean を注入できます。注意。そのタイプは ClientFactoryBean ではなく Client になります。Spring はそれがファクトリ Bean であることを検出し、getObject 呼び出しの結果を管理するためです。