使用@Named注解(一个接口多个实现,匹配引入想要的实现类)

@Inject注解

@Named注解


若一个接口DemoInterface,有多个(最少2个)实现类(A_Demo_Impl,B_Demo_Impl.... ),
在引用类中使用@Inject注解时,要在类级别上使用相关的限定符进行注解, 同时在注入DemoInterface的类中要有一个字段使用相同的限定符进行注解。
如下:
@Inject  @A_Demo_Impl
private DemoInterface demoService;



使用@Named注解(解决匹配引入一个接口多个实现):
	/**
	* @ClassName:DemoService
	* @Description:接口
	* @date:2017年7月12日
	* 修改备注:
	*/
	public interface DemoService{
		public void demoTest();
	}
	
	/**
	* @ClassName:DemoService_A_impl
	* @Description:实现类A
	* @date:2017年7月12日
	* 修改备注:
	*/
	@Named("demoService_A_impl")
	public class DemoService_A_impl implements DemoService{
		@Override
		public void demoTest(){
			//here codes
		}
	}
	
	/**
	* @ClassName:DemoService_B_impl
	* @Description:实现类B
	* @date:2017年7月12日
	* 修改备注:
	*/
	@Named("demoService_B_impl")
	public class DemoService_B_impl implements DemoService{
		@Override
		public void demoTest(){
			//codes here----codes here
		}
	}
	
	/**
	* @ClassName:UseDemo
	* @Description:使用类,注入接口类
	* @date:2017年7月12日
	* 修改备注:
	*/
	public class UseDemo{
		
		@Inject
		@Named("demoService_B_impl")   //指定注入实现类B
		private DemoService demoService;
		
		public void doSomething(){
			demoService.demoTest();    //在此处调用的是实现类B的实现方法
		}
		
	}




  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现一个Flink SQL WebSocket连接器,需要遵循以下步骤: 1. 创建一个WebSocket连接器,继承Flink SQL的TableSource接口,用于从WebSocket中读取数据。 ``` public class WebSocketTableSource implements StreamTableSource<Row> { private final String url; private final String[] fieldNames; private final TypeInformation<?>[] fieldTypes; public WebSocketTableSource(String url, String[] fieldNames, TypeInformation<?>[] fieldTypes) { this.url = url; this.fieldNames = fieldNames; this.fieldTypes = fieldTypes; } @Override public DataStream<Row> getDataStream(StreamExecutionEnvironment env) { // 创建WebSocket连接 WebSocketClient client = new WebSocketClient(); final List<Row> rows = new ArrayList<>(); client.connect(new WebSocketAdapter() { @Override public void onTextMessage(WebSocket websocket, String message) throws Exception { // 从WebSocket中读取数据 ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(message); Object[] values = new Object[fieldTypes.length]; for (int i = 0; i < fieldTypes.length; i++) { values[i] = objectMapper.convertValue(jsonNode.get(fieldNames[i]), fieldTypes[i].getTypeClass()); } rows.add(Row.of(values)); } }, new URI(url)); // 将数据转换为数据流 TypeInformation<Row> rowType = Types.ROW_NAMED(fieldNames, fieldTypes); return env.fromCollection(rows, rowType); } @Override public TableSchema getTableSchema() { return new TableSchema(fieldNames, fieldTypes); } @Override public String explainSource() { return "WebSocket(" + url + ")"; } } ``` 2. 在Flink SQL中使用WebSocket连接器,例如: ``` CREATE TABLE websocket_table ( field1 STRING, field2 INT, field3 BOOLEAN ) WITH ( 'connector' = 'websocket', 'url' = 'ws://localhost:8080', 'format' = 'json' ); SELECT * FROM websocket_table; ``` 这将创建一个WebSocket连接器,并将从WebSocket中读取的数据作为Flink SQL的表。需要注意的是,WebSocket连接器需要异步处理事件,因此需要使用非阻塞式的WebSocket客户端库,例如Jetty WebSocket客户端库。同时,需要指定数据的格式,例如JSON格式,以便正确解析数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值