Java 创建后编辑bean,对于类I can';不修改源代码吗?

Java 创建后编辑bean,对于类I can';不修改源代码吗?,java,spring,initialization,spring-bean,Java,Spring,Initialization,Spring Bean,我有一个Springbean,我需要在创建它之后进行更改,但是我没有权限编辑bean类的源代码;所以我不能用 初始方法 初始化bean @施工后 是否有某种方法可以检测这个bean是在另一个类中由id创建的,然后应用我需要的更改 谢谢您可以实现应用您自己的自定义逻辑 例如: public class UserPassAuthFilterBeanPostProcessor implements BeanPostProcessor { private String usernamePa

我有一个Springbean,我需要在创建它之后进行更改,但是我没有权限编辑bean类的源代码;所以我不能用

  • 初始方法
  • 初始化bean
  • @施工后
是否有某种方法可以检测这个bean是在另一个类中由id创建的,然后应用我需要的更改

谢谢

您可以实现应用您自己的自定义逻辑

例如:

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;
    }
    //...
}
您可以实现应用自己的自定义逻辑

例如:

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;
    }
    //...
}

通常,您没有编写的惟一Springbean是Spring框架提供的bean。您希望更改的been来自何处?它们是如何实例化的?我们的软件使用三层结构:平台、解决方案和实现。我试图更改的bean存在于一个平台库中,我正在实现层工作。我们都试图绕过限制,不能等待下一个平台发布,但扩展平台似乎是正确的做法。如果您的实现正在加载所有spring上下文,那么您可以使用所建议的
BeanPostProcessor
。通常,您唯一没有编码的spring bean是spring框架提供的bean。您希望更改的been来自何处?它们是如何实例化的?我们的软件使用三层结构:平台、解决方案和实现。我试图更改的bean存在于一个平台库中,我正在实现层工作。我们都试图绕过限制,不能等待下一个平台发布,但扩展平台似乎是正确的做法。如果您的实现正在加载所有spring上下文,则可以按照建议使用
BeanPostProcessor