0

Client(Object) をコードに挿入できるように、次のコードを spring.xml の Client Bean に作成するにはどうすればよいですか? エラスティック検索からデータを取得するようにこの Bean を構成しています。

Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300));
4

1 に答える 1

1

クライアント 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 呼び出しの結果を管理するためです。

于 2016-05-05T15:07:03.810 に答える