我们有这样一个要求,在设置Bean属性的时候,要检查设置内容是否含有fuck和shit这样的脏话,如果有的话,则进行过滤(使用一个简单的算法把脏话变成新的字符),如果没有,则正常设置,如果使用传统方法,首先需要定义一个脏话过滤接口,然后实现这个接口,再设计一个工程类返回这个实现类的实例,在每一个set方法中都调用检查方法,这样不仅会增加代码量,而且给维护带来了噩梦般的体验,我们如果使用AOP的思想进行设计,就显得代码很简洁,很干净
本文模拟一个编写Blog文章的场景
BlogPositng 这是一个Blog Entity 的接口,其中设置blog body的方法











BlogPostingImpl是BlogPosting接口的实现类,也就是我们的domain对象















BlogManager是blog管理类,通过这个类的set方法设置blog body,这个类也是我们需要通知的类


















OnscenityFilter是脏话过滤类的接口










ListBasedObscenityFilter是OnscenityFilter的实现类

















































































































前置通知,当传入对象是BlogPosting的一个实例时,进行脏话判断和处理









































配置文件:




































测试代码:



























结果:
fuvg! you must be shpx 可以看到,脏话已经被处理过了