https://zhuanlan.zhihu.com/p/67689874?from_voters_page=true 这个帖子中说“ 不要对Controller使用AOP手法,这会导致JavaFX自己的FXML注解失效,无法将FXML文件中指定的控件注入到Controller中 ”,感觉这种说法不是很正确。
有一个类似问题的帖子: https://stackoverflow.com/questions/19979047/cant-intercept-a-pointcut-with-spring-aop
感觉这个帖子可以实验实验:解决SpringBoot中自己new出来的对象不能自动注入对象和属性的问题
很不错的帖子: 自己new的对象怎么注入spring管理的对象
new的对象中获取spring的bean https://blog.csdn.net/qq_38207970/article/details/88395237
今天发现在简单的javaFX项目中使用AOP不成功,具体说明如下:
public class NamePointCut {
@Pointcut(value = "execution(* mytbnclick(..))")
protected void methon2(){
}
}
@Configuration
@Aspect
@EnableAspectJAutoProxy (proxyTargetClass = true)
@ComponentScan(basePackages = "com.example.javafxminademo.controller")
@Component
public class NamePointCutAspect {
//切面类中使用切点,并且要说明是哪个切点(包括是哪个切点类的哪个切点方法)
@Before("NamePointCut.methon2()")
public void aspectMethon1(JoinPoint joinPoint)
{
System.out.println("NamePointCutAspect.aspectMethon1");
}
}
controller包下有一个javaFX的controller,其中有一个按钮的事件(说明:本javaFX项目在没有引入AOP之前一切正常):
@FXML
protected void mytbnclick() //(ActionEvent actionEvent)
{
System.out.println("clidk");
}
但是当我点击按钮的时候却不会执行AOP动作。我有点怀疑是不是我搞错代码了,然后再做了一个简单的hello web项目,将NamePointCutAspect和NamePointCut两个类文件复制到web项目中,只不过NamePointCut中切点换成了
@Pointcut(value = "execution(* sayhi(..))")
当浏览器访问页面时调用sahi()方法,可以出现AOP动作。这说明我的AOP代码及配置没有错误,为什么在WEB项目中可以正常执行,但在javaFX项目中不能正确执行呢?
2020/2/2最终解决了javaFX项目中AOP,具体可以看帖子: https://my.oschina.net/u/2963604/blog/3162739
来源:oschina
链接:https://my.oschina.net/u/2963604/blog/3159944