我试图在新创建的bean上动态创建Spring bean和Set Annotations来对下面的代码进行单元测试
class BeanMetadata
{
int id;
String type;
String beanName;
Date createdAt;
Date createdBy;
}
此方法从BeanMetadata获取bean名称,并在applicationCOntext中搜索给定的bean,并检查bean是否在bean上存在@OperationExecutePermission
或@AdministerPermission
注释。
所以我试图动态创建Spring bean并在新创建的
上设置这些注释void addCommandPermissions(BeanMetadata command) {
if (applicationContext.containsBean(command.getBeanName())) {
Object bean = applicationContext.getBean(command.getBeanName());
Class<?> beanClass = bean.getClass();
if (beanClass.isAnnotationPresent(AdministerPermission.class)) {
overrideAdminPermission = beanClass.getAnnotation(AdministerPermission.class).name();
}
if (beanClass.isAnnotationPresent(OperationExecutePermission.class)) {
overrideExecPermission = beanClass.getAnnotation(OperationExecutePermission.class).name();
}
}
如果(beanClass.isAnnotationPresent(AdministerPermission.class))
必须为true或者(beanClass.isAnnotationPresent(OperationExecutePermission.class))
对于新创建的bean必须为true,我试图实现。
答案 0 :(得分:1)
您无法在运行时向任何内容添加注释。
您可以在这里做的最好的事情是创建一个带注释的类。然后,您可以使用具有注释的类和不具有注释的类来测试您的代码。