2016-06-07 73 views
2

我想构建以下内容。如果问题的标题含糊不清,请相应更改,因为我无法想到更好的标题。如何在getter和setter方法中设置钩子

在我的pojo的getter和setter中加入某种钩子。所以当我调用pojo的任何引用属性时,我可以调用一个数据库,并且可以获得最新的引用。

例如

Class A{ 
} 

Class B{ 
    Class A a; 

    @MagicAnnotation(type=getter) 
    getA(){ 
    return a; 
    } 

    @MagicAnnotation(type=setter) 
    setA(a){ 
    this.a=a; 
    } 

} 

所以每当一个getter或setter标注有@MagicAnnotation我知道我需要做的数据库操作。就像getter一样,我可以从数据库中再次加载参考属性。

是否有任何现有的工具可以完成这项任务?或任何线索我如何开发这样的功能?

我正在使用弹簧。 :)

+1

既然你提到数据库访问,你有没有考虑过使用ORM框架,比如JPA?对每个getter和setter调用进行数据库调用似乎是一个非常糟糕的主意...... –

回答

0

这是JEE拦截器(见http://docs.oracle.com/javaee/6/tutorial/doc/gkigq.html),它们在每个CDI框架(http://docs.oracle.com/javaee/6/tutorial/doc/gkhjx.html

实现入门与独立的代码(即这样一个框架标准的情况下,无需设置服务器基础设施)看看焊接-SEhttp://weld.cdi-spec.org/

注意,即 - 当你移动到CDI - 拦截器只对manged豆类工作,而不是为你自己创建的数据对象。这可能需要一些重构。

+0

提示:该问题有一个“Spring”标记。 – zeroflagL