Springboot中自定义注解怎么支持el表达式?

@Target(ElementType.METHOD)
//范围
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyAnno{

    String key();
    String fieldKey() ;
}
    @MyAnno(key = "getUser",fieldKey = "#user.getUserName()")
    public User getUser(User user) {
        return null;
    }

但是fieldKey并不能拿到值,求助~

阅读 12.1k
1 个回答

没这功能吧,可以使用AOP利用反射修改注解@MyAnno的fieldKey属性值为user.getUserName()
例如:

MyAnno myAnno=method.getAnnotation(MyAnno.class);
                InvocationHandler handler=Proxy.getInvocationHandler(myAnno);
                try {
                    Field field=handler.getClass().getDeclaredField("memberValues");
                     field.setAccessible(true);
                       /*从注入的httpSession获取当前User信息
                     
                        */
                        Map memberValues = (Map) field.get(handler);
                        // 修改 value 属性值
                        memberValues.put("fieldKey", user.getUserName());
                } catch (NoSuchFieldException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题