Spring Boot / Swing 独立应用程序的 AspectJ 方面的自动装配服务 null
Autowired service null in AspectJ aspect on a Spring Boot / Swing standalone app
我目前在 Spring 引导上有一个 Swing 应用程序 运行,使用以下代码启动:
SpringApplication application = new SpringApplication(Something.class);
application.setWebApplicationType(WebApplicationType.NONE);
application.run(args);
我已经为 aspectjweaver 和 spring-instrument 启用了 java 代理,并启用了加载时编织,因为我需要以私有方法为目标。我的方面是日志记录,所以我需要自动装配一个日志记录服务,将条目写入数据库中的日志 table。切面 class 使用 @Aspect 和 @Component 注释。我正在尝试使用 @Autowired 批注自动装配服务,但在执行任何切入点时该值为 null。我认为这与实例化这些方面的 Spring 上下文之外的某种其他机制有关,但我无法弄清楚如何正确地自动装配我所需的服务。我尝试实现 ApplicationContextAware 接口,但它也不起作用。
有没有人有将服务自动装配到 Swing 应用程序的 AspectJ 方面的经验?我有另一个在 Spring Boot 和 Spring MVC 上运行的项目,它开箱即用。
谢谢
我的问题原来部分与多线程相关,但我最想念的是这个:
@Bean
public MessagingLogger messagingLogger(LogEntryService logEntryService)
{
MessagingLogger aspect = Aspects.aspectOf(MessagingLogger.class);
aspect.setLogEntryService(logEntryService);
return aspect;
}
这就是我如何能够 "inject" 我的服务进入我的方面。我的问题的第二部分结果是我在多线程设置中不够小心(这个应用程序中有很多后台进程)并且我试图使用方面,而 Spring 甚至没有完成所有服务的创建。
我目前在 Spring 引导上有一个 Swing 应用程序 运行,使用以下代码启动:
SpringApplication application = new SpringApplication(Something.class);
application.setWebApplicationType(WebApplicationType.NONE);
application.run(args);
我已经为 aspectjweaver 和 spring-instrument 启用了 java 代理,并启用了加载时编织,因为我需要以私有方法为目标。我的方面是日志记录,所以我需要自动装配一个日志记录服务,将条目写入数据库中的日志 table。切面 class 使用 @Aspect 和 @Component 注释。我正在尝试使用 @Autowired 批注自动装配服务,但在执行任何切入点时该值为 null。我认为这与实例化这些方面的 Spring 上下文之外的某种其他机制有关,但我无法弄清楚如何正确地自动装配我所需的服务。我尝试实现 ApplicationContextAware 接口,但它也不起作用。
有没有人有将服务自动装配到 Swing 应用程序的 AspectJ 方面的经验?我有另一个在 Spring Boot 和 Spring MVC 上运行的项目,它开箱即用。
谢谢
我的问题原来部分与多线程相关,但我最想念的是这个:
@Bean
public MessagingLogger messagingLogger(LogEntryService logEntryService)
{
MessagingLogger aspect = Aspects.aspectOf(MessagingLogger.class);
aspect.setLogEntryService(logEntryService);
return aspect;
}
这就是我如何能够 "inject" 我的服务进入我的方面。我的问题的第二部分结果是我在多线程设置中不够小心(这个应用程序中有很多后台进程)并且我试图使用方面,而 Spring 甚至没有完成所有服务的创建。