1,在给每个属性设值时 ,找到对应的 PropertyEditor, 转换成正确的类型设值 。
CustomEditorConfigurer检查到Bean包含需要转换的属性,并且该属性在容器中的值是字符串时,它就会调用setAsText(String text),把字符串转换成目标类的实例。
2,advice跟advisor的区别:
advice: 它是interceptor, 类型是Around, After, Before, Throw类型中的一种。
advisor: advisor也是interceptor,从某种意义上,可以理解它也是一种advice,却可以对一个对象的方法进行过滤。符合某些条件的方法该interceptor才生效。
比如RegexpMethodPointcutAdvisor就可以进行正则表达式的配置。get.*表示该interceptor只对getxxx的方法有效。
3. validator Errors ValidationUtils
Errors errors = new BindException(p, "person"); // p为要验证的对象。
Validator personValidator = new PersonValidator();
personValidator.validate(p, errors); //验证完后把错误存入errors.
ValidationUtils.rejectIfEmpty(e, "name", "name.empty");
4 Introduction
假设要为一个类添加一个Lockable接口,首先建一个类继承DelegatingIntroductionInterceptor和实现Lockable接口,
再建一个advice继承DefaultIntroductionAdvisor, 在这个类中把接口和相应的Interceptor关联起来。最后编写配置文件。这个配置就是aop代理。然后 就 可以利用这个接口了。
其实际是在新的代理类里增加了新的属性和方法,在代理类里面执行新的方法产生的影响来作用于目标类。