鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ Springboot中自定義注解怎么支持el表達(dá)式?

Springboot中自定義注解怎么支持el表達(dá)式?

@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并不能拿到值,求助~

回答
編輯回答
墨沫

沒(méi)這功能吧,可以使用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獲取當(dāng)前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();
                }
2017年1月12日 11:20