如何在新创建的bean上动态创建Spring bean和Set Annotations

时间:2014-06-10 01:00:44

标签: java spring unit-testing junit

我试图在新创建的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,我试图实现。

1 个答案:

答案 0 :(得分:1)

您无法在运行时向任何内容添加注释。

您可以在这里做的最好的事情是创建一个带注释的类。然后,您可以使用具有注释的类和不具有注释的类来测试您的代码。