天天看点

《Spring攻略(第2版)》——1.10 用@Required注解检查属性

本节书摘来自异步社区《spring攻略(第2版)》一书中的第1章,第1.10节,作者: 【美】gary mak , josh long , daniel rubio著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.10.1 问题

spring的依赖检查功能仅能检查某些类型的所有属性。它的灵活性不够,不能仅检查特定的属性。在大部分情况下,你希望检查特定的属性是否设置,而不是特定类型的所有属性。

1.10.2 解决方案

requiredannotationbeanpostprocessor是一个spring bean后处理器,检查带有@required注解的所有bean属性是否设置。bean后处理器是一类特殊的spring bean,能够在每个bean初始化之前执行附加的工作。为了启用这个bean后处理器进行属性检查,必须在spring ioc容器中注册它。注意,这个处理器只能检查属性是否已经设置,而不能测试属性是否非空。

1.10.3 工作原理

假定对于序列生成器来说,prefixgenerator和suffix属性都是必要的。你可以用@required注解它们的设值方法。

为了要求spring检查所有序列生成器实例上这些属性是否已经设置,你必须在ioc容器中注册一个requiredannotationbeanpostprocessor实例。如果你打算使用bean工厂,就必须通过api注册这个bean后处理器,否则,只能在应用上下文中声明这个bean后处理器的实例。

如果你正在使用spring 2.5或者更高版本,可以简单地在bean配置文件中包含元素,这将自动地注册一个requiredannotationbeanpostprocessor实例。

如果任何带有@required的属性未设置,bean后处理器将抛出一个beaninitializationexception异常。

除了@required注解之外,requiredannotationbeanpostprocessor还能用自定义的注解检查属性。例如,你可以创建如下注解类型:

然后将这个注解应用到必要属性的设值方法。

为了用这个注解类型检查属性,你必须在requiredannotationbeanpostprocessor的required annotationtype属性中指定。