spring中的java自动动态绑定
我正在使用SpringMVC,并希望公开javascript使用的默认验证器。 我有一堆扩展公共抽象类的控制器和一堆实现公共接口的验证器。情况是这样的:
public abstract class AbstractController {
protected Validator validator;
}
public class FooController extends AbstractController{}
public class BarController extends AbstractController{}
public interface Validator {}
public class FooValidator implementes Validator{}
public class BarValidator implementes Validator{}
我想分别为每个具体控制器自动设置validator字段(这样FooController.validator将是foodalidater的实例)。 应自动按类名进行匹配
# 1 楼答案
你不能在你的配置中使用这样的东西吗:
# 2 楼答案
您可以创建一个BeanPostProcessor来执行此操作,并在应用程序上下文中注册它。后处理器可以查找具有正确命名约定的AbstractController实例,生成验证器名称,通过反射实例化验证器对象,并在控制器中进行设置。比如:
或者,如果验证器注册为SpringBean,因为它们需要依赖项注入或其他什么,那么您可以创建一个BeanFactoryPostProcessor(而不是BeanPostProcessor),按类型或名称查找所有控制器bean定义,然后按类型或名称查找匹配的验证程序bean定义,并将匹配的验证程序添加到每个控制器bean的属性列表中。我没有这方面的示例代码,但希望您能理解