Как создать два служебных компонента Java Spring, в которых параметры метода проверяются - PullRequest
1 голос
/ 07 марта 2020

Если у меня есть одна указанная c Java служба, и я хочу проверить параметры метода службы (до вызова метода), я просто аннотирую класс службы с помощью @Service и @Validated, а параметры метода - с одним или несколькими аннотации ограничений.

Что нужно сделать, чтобы создать две службы одного и того же класса, в которых параметры метода службы проверяются?

Создание двух служб можно сделать, добавив две @ Боб аннотированные методы (которые возвращают экземпляр службы) в классе конфигурации. Но это не привело к тому, что прокси-классы и аргументы метода службы не были проверены.

Аннотирование метода создания службы с помощью @Bean и @Validated не сработало.

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 07 марта 2020

Вы можете создать свой собственный прокси, используя ProxyFactory:

    @Bean
    public FooService fooService(Validator validator) {
        ProxyFactory proxyFactory = new ProxyFactory(new FooService());
        proxyFactory.addAdvice(new MethodValidationInterceptor(validator));

        // generated proxy; it can be casted to FooService
        Object proxy = proxyFactory.getProxy();

        return (FooService) proxy;
    }

Странно, что ваши экземпляры не были упакованы в прокси. Это должно происходить даже при использовании @Bean методов конфигурации. Вы можете попробовать отладить AbstractAutowireCapableBeanFactory#initializeBean (примерно так же, как и applyBeanPostProcessorsAfterInitialization).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...