2017-01-11 12 views
0

У меня есть весенний боб, который мне нужно изменить после его создания, но у меня нет доступа к редактированию источника класса bean; поэтому я не могу использовать ...Редактировать bean после создания, для класса Я не могу изменить источник?

  • INIT-метод
  • InitializingBean
  • @PostConstruct

Есть ли какой-то способ, которым я могу определить, когда этот компонент создается идентификатор в другом классе , затем примените изменения, которые мне нужны?

Благодаря

+0

Обычно только пружинные бобы, которые вы не делали код, это бобы, предоставляемые пружинной структуры. Откуда берутся бины, которые вы хотите изменить, и как они создаются? –

+0

Наше программное обеспечение использует трехуровневую структуру: платформу, решение и реализацию. Боб, который я пытаюсь изменить, существует в библиотеке платформы, и я работаю на уровне реализации. –

+0

Надеюсь, вы услышите проблему со следующим: «Я пытаюсь изменить существующую * платформу * библиотеку». Мы все пытались обойти ограничения и не смогли дождаться следующего релиза платформы, но расширение платформы кажется правильным. Если ваша реализация загружает все весенние контексты, вы можете использовать '' 'BeanPostProcessor''', как было предложено –

ответ

1

Вы можете реализовать BeanPostProcessor применить свою собственную логику.

Пример:

public class UserPassAuthFilterBeanPostProcessor implements BeanPostProcessor { 

    private String usernameParameter; 
    private String passwordParameter; 

    @Override 
    public final Object postProcessAfterInitialization(final Object bean, final String beanName) { 
     return bean; 
    } 

    @Override 
    public final Object postProcessBeforeInitialization(final Object bean, final String beanName) { 
     if (bean instanceof UsernamePasswordAuthenticationFilter) { 
      final UsernamePasswordAuthenticationFilter filter = (UsernamePasswordAuthenticationFilter) bean; 
      filter.setUsernameParameter(getUsernameParameter()); 
      filter.setPasswordParameter(getPasswordParameter()); 
     } 

     return bean; 
    } 
    //... 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^