Selaa lähdekoodia

refactor(environment-hj212-service): 重构 Netty 服务器处理方式

- 移除 NtServer 中的 ServerHandler 注入
- 使用 SpringContextUtil 在 ServerHandler 中获取 MonitorDatasynch bean- 添加 SpringContextUtil 工具类,用于获取 Spring 上下文中的 bean
林仔 1 vuosi sitten
vanhempi
commit
32fa4f757c

+ 1 - 10
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/config/NtServer.java

@@ -7,7 +7,6 @@ import io.netty.channel.socket.ServerSocketChannel;
 import io.netty.channel.socket.SocketChannel;
 import io.netty.channel.socket.nio.NioServerSocketChannel;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
@@ -27,14 +26,6 @@ public class NtServer {
 
     private EventLoopGroup worker;
 
-    // 注入 ServerHandler
-    private final ServerHandler serverHandler;
-
-    @Autowired
-    public NtServer(ServerHandler serverHandler) {
-        this.serverHandler = serverHandler;
-    }
-
     @PostConstruct()
     private void startServer() {
         log.info("进入程序....");
@@ -61,7 +52,7 @@ public class NtServer {
                             protected void initChannel(SocketChannel sc) throws Exception {
                                 // 增加任务处理
                                 ChannelPipeline p = sc.pipeline();
-                                p.addLast(serverHandler);
+                                p.addLast(new ServerHandler());
                             }
                         });
 

+ 5 - 6
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/config/ServerHandler.java

@@ -1,6 +1,7 @@
 package com.zksy.environmentHJ212.config;
 
 import com.zksy.environmentHJ212.utils.MonitorDatasynch;
+import com.zksy.environmentHJ212.utils.SpringContextUtil;
 import io.netty.buffer.ByteBuf;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
@@ -8,19 +9,17 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.PostConstruct;
 import java.time.LocalDateTime;
 
 @Slf4j
 @Component
 public class ServerHandler extends ChannelInboundHandlerAdapter {
-    private final MonitorDatasynch monitorDatasynch;
-
     @Autowired
-    public ServerHandler(MonitorDatasynch monitorDatasynch) {
-        this.monitorDatasynch = monitorDatasynch;
-    }
+    private MonitorDatasynch monitorDatasynch;
 
+    public ServerHandler() {
+        this.monitorDatasynch = SpringContextUtil.getBean(MonitorDatasynch.class);
+    }
 
     /**
      * 客户端与服务端创建连接的时候调用

+ 21 - 0
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/utils/SpringContextUtil.java

@@ -0,0 +1,21 @@
+package com.zksy.environmentHJ212.utils;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SpringContextUtil implements ApplicationContextAware {
+
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        SpringContextUtil.applicationContext = applicationContext;
+    }
+
+    public static <T> T getBean(Class<T> clazz) {
+        return applicationContext.getBean(clazz);
+    }
+}