如何将以下代码创建到 spring.xml 中的 Client bean 中,以便我可以将 Client(Object) 注入我的代码中?我正在配置这个 bean 以从弹性搜索中获取数据。
Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300));
如何将以下代码创建到 spring.xml 中的 Client bean 中,以便我可以将 Client(Object) 注入我的代码中?我正在配置这个 bean 以从弹性搜索中获取数据。
Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300));
创建一个 Spring FactoryBean,它允许您公开一个客户端 bean,并且很容易在 Spring 应用程序上下文中配置为一个 bean。例如
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。注意。它的类型将是 Client 而不是 ClientFactoryBean,因为 Spring 会检测到它是一个工厂 bean,它将管理 getObject 调用的结果