如何创建两个Java Spring服务bean,在其中验证方法参数

如何创建两个Java Spring服务bean,在其中验证方法参数,spring,validation,service,proxy,Spring,Validation,Service,Proxy,如果我有一个特定的Java服务,并且我想验证服务方法参数(在方法被调用之前),我只需使用@service和@Validated注释服务类,并使用一个或多个约束注释注释方法参数 要创建同一类的两个服务,在其中验证服务方法参数,我必须做什么 可以通过在配置类中添加两个@Bean注释方法(返回服务实例)来创建两个服务。但这并没有导致未验证的代理类和服务方法参数 用@Bean和@Validated注释服务生成方法无效 如何解决此问题?您可以使用以下方法创建自己的代理: @Bean 公共FooServic

如果我有一个特定的Java服务,并且我想验证服务方法参数(在方法被调用之前),我只需使用@service和@Validated注释服务类,并使用一个或多个约束注释注释方法参数

要创建同一类的两个服务,在其中验证服务方法参数,我必须做什么

可以通过在配置类中添加两个@Bean注释方法(返回服务实例)来创建两个服务。但这并没有导致未验证的代理类和服务方法参数

用@Bean和@Validated注释服务生成方法无效


如何解决此问题?

您可以使用以下方法创建自己的代理:

@Bean
公共FooService FooService(验证器验证器){
ProxyFactory ProxyFactory=新的ProxyFactory(新的FooService());
addAdvice(新方法验证接口(验证器));
//生成的代理;可以将其强制转换为FooService
对象代理=proxyFactory.getProxy();
返回(FooService)代理;
}


但奇怪的是,您的实例还没有包装到代理中。即使在使用
@Bean
配置方法时也会发生这种情况。您可以尝试调试AbstractAutowireCapableBeanFactory#initializeBean(使用applyBeanPostProcessorsAfterInitialization进行调试)。

您可以使用以下方法创建自己的代理:

@Bean
公共FooService FooService(验证器验证器){
ProxyFactory ProxyFactory=新的ProxyFactory(新的FooService());
addAdvice(新方法验证接口(验证器));
//生成的代理;可以将其强制转换为FooService
对象代理=proxyFactory.getProxy();
返回(FooService)代理;
}

但奇怪的是,您的实例还没有包装到代理中。即使在使用
@Bean
配置方法时也会发生这种情况。您可以尝试调试AbstractAutowireCapableBeanFactory#initializeBean(与applyBeanPostProcessorsAfterInitialization的行相邻)