java:使用AOP的字段更改通知

java:使用AOP的字段更改通知,java,spring,aop,Java,Spring,Aop,我们有一个特殊领域的课程。字段类型为字符串,但它只能接受一组定义的值。它可以接受的值由类型指定,并且每个类型都有一组定义的值 比如说, class MyClass { // Special Field of "TypeA" String zimbra; } zimbra只能分配一组值-值A1、值A2等 如果zimbra的类型为B,则可以为其分配-ValueB1、ValueB2等。这些类型和值在持久存储中配置 我们希望验证字段值分配。这可以使用或来完成。但我们希望使用AOP Sp

我们有一个特殊领域的课程。字段类型为字符串,但它只能接受一组定义的值。它可以接受的值由类型指定,并且每个类型都有一组定义的值

比如说,

class MyClass {
    // Special Field of "TypeA"
    String zimbra;
}
zimbra只能分配一组值-值A1、值A2等

如果zimbra的类型为B,则可以为其分配-ValueB1、ValueB2等。这些类型和值在持久存储中配置

我们希望验证字段值分配。这可以使用或来完成。但我们希望使用AOP Spring注释或AspectJ来简化它


请建议这里是否可以使用AOP作为解决方案。

Spring AOP有一些限制:

它只能应用于由声明方面的应用程序上下文创建的bean。尤其是,它对由new创建的对象没有任何用处。 它主要用于实现推断面的对象,只能截取接口方法 如果通过javassist直接代理类,则对象必须具有默认构造函数
AspectJ将能够做到这一点,因为它远比Spring AOP强大,但您必须处理它的编织问题。

谢谢@Serge。请概述如何在这里使用AspectJ。@gammay:对不起,我不能。我主要使用SpringAOP,只知道我读过的东西。不管怎样,我觉得我有点太宽了。尝试用谷歌搜索arount以查找教程和文档。我只能给出一些链接:我想知道为什么不将特殊类型封装到类中以确保正确的验证。无论如何,正如Serge所说,AspectJ可以用来做你想做的事情,即使它不是为了修补糟糕的设计而发明的。为了回答您的问题,我需要知道如何确定任何普通字符串字段的类型。请提供一些您的数据库的示例,以便我能够回答这个问题。