请参阅下面的更新。
我有一个接受 TCP/IP 连接的 Spring Boot 应用程序:
public MyClass implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
try (ServerSocket serverSocket = new ServerSocket(port)) {
while (true) {
Socket socket = serverSocket.accept();
new ServerThread(socket).start();
}
}
}
...
private class ServerThread extends Thread {
@Override
public void run() {
try (InputStream input = socket.getInputStream();
OutputStream output = socket.getOutputStream()) {
// Read line from input and call a method from service:
service.myMethod(lineConvertedToMyObject);
} catch {
...
}
}
}
}
现在这工作正常,因为它是。但是当我将 AspectJ 介绍给myMethod:
@Aspect
@Component
public class MyServiceAspect {
private static final Logger logger = LoggerFactory.getLogger(MyServiceAspect.class);
@Around(value = "execution(* com.package.to.MyService.myMethod(..))")
public MyObject rules(ProceedingJoinPoint joinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
MyObject obj = (MyObject) joinPoint.proceed();
logger.debug("Took {} milliseconds", System.currentTimeMillis() - startTime);
return obj;
}
}
service.myMethod没有被调用并且线程被阻塞。我错过了什么?
更新:
所以这就是交易:MyService,MyServiceImpl并且MyServiceAspect都在同一个包中。移动MyServiceAspect到另一个包使它工作。
这是否为任何人敲响了警钟?很高兴将赏金奖励给解释这种行为的任何人。谢谢!
更新 2:
然而,另一种解决方案:添加@DependsOn(value = {"myServiceAspect"})之上MyServiceImpl再解决问题,仍然不知道为什么,虽然。
杨魅力
css文件存于哪个包中合适
请问一下仅仅初始化的代码包导入有什么用
同一个包中多个类的调用
仅仅使用else if,而不使用else,是否合适?
相关分类