spring-boot - @Aspect 不适用于“registerBeanDefinition”的动态 bean 注册
问题描述
我使用“registerBeanDefinition”注册了一个 bean,但方面在这个 bean 上不起作用。
/* tool class */
@Component
public class SpringBeanUtil {
public <T> T getBean(Class<T> clazz){
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(clazz);
DefaultListableBeanFactory beanFactory =
(DefaultListableBeanFactory)configurableApplicationContext.getBeanFactory();
beanFactory.registerBeanDefinition(clazz.getName(), builder.getRawBeanDefinition());
Object bean = configurableApplicationContext.getBean(clazz.getName());
return (T) bean;
}
/* my class */
public class ResourceHandle{
public ResourceHandle() {}
@WorkFlow
public void create(Resource rc) {
System.out.println("ResourceHandle:create:{}.", rc)
return;
}
}
/* annotation class */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WorkFlow {
String name() default "";
}
/* aspcet class */
@Component
@Aspect
public class WorkFlowAspect {
@Pointcut("@annotation(com.workflow.WorkFlow)")
public void cutAction() {
}
@Around(value = "@annotation(com.workflow.WorkFlow)")
public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
Resource retResource = null;
retResource = (Resource)joinPoint.proceed();
return retResource;
}
}
我调用这样的代码,
ResourceHandle handle = SpringBeanUtil.getBean(ResourceHandle.class);
handle.create(rc);
@Aspect“doAround”不起作用。但是当我将“ResourceHandle 类”更改为:
/* my class */
@Component
public class ResourceHandle{
public ResourceHandle() {}
@WorkFlow
public void create(Resource rc) {
System.out.println("ResourceHandle:create:{}.", rc)
return;
}
}
像这样调用代码,
@Autowired
ResourceHandle handle;
........
handle.create(rc);
@Aspect“doAround”工作。但我想自己创建bean。我该怎么做?
解决方案
推荐阅读
- kubernetes - Kubernetes 中 Pod 之间的通信。服务对象还是集群网络?
- python - AttributeError: 'list' 对象没有属性 'groupby'
- matlab - 下面的matlab符号是什么意思?
- javascript - 用 requestAnimationFrame() 替换 setTimeout()
- python-3.x - 带有 kwargs 的递归函数
- python - AWS Elastic Beanstalk chown PythonPath 错误
- python - 使用 python click 库等待时自动回答 bash
- jsf - NullPointerException 使用 JSF 2.3 websocket 使用 JSF 导航
- java - 在 iText 中检索段落的坐标
- java - 通过进入 JVM 来调试 Java 程序?