null
エンティティ パッケージのセッター メソッドの文字列引数で空の文字列をチェックし、それらを値に置き換えるアスペクトを開発しています。しかし、残念ながら私のアスペクトはうまく機能しません:(。私のポイントカット定義が原因だと思いますが、よくわかりません。
私の側面は次のようになります。
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
@Aspect
public class EmptyStringToNullSetter {
private static final Logger LOGGER = LoggerFactory
.getLogger(EmptyStringToNullSetter.class);
public void check(final JoinPoint jp) {
LOGGER.debug(jp.getSignature().toLongString());
}
}
私の春の設定は次のようになります:
<bean id="emptyStringToNullSetter" class="de.foo.util.aop.parameter.EmptyStringToNullSetter" />
<aop:config>
<aop:pointcut id="entityStringSetter" expression="execution(* de.foo.entity.*.set*(..)) and args(java.lang.String)" />
<aop:aspect id="checkEmptyStringsAspect" ref="emptyStringToNullSetter">
<aop:before method="check" pointcut-ref="entityStringSetter" />
</aop:aspect>
</aop:config>
私のテストクラスは次のようになります:
import de.foo.entity.Period;
@ContextConfiguration(locations = { "/spring/test-util-context.xml" })
public class EmptyStringToNullSetterTest extends
AbstractJUnit4SpringContextTests {
@Test
public void testCheck() {
Period period = new Period();
period.setName("");
Assert.assertNull(period.getName());
}
}
テストを実行すると、アスペクトはセッターをインターセプトしません。誰かが理由を知っていますか?!
乾杯、
ケビン