如何 运行 在 Spring 中每次初始化和销毁​​方法

How to run init and destroy method every time in Spring

我有一个 class,CustomerService,它是一个 Spring bean。在完成调用 getCustomer() 和 cleanUp() 之前,如何 运行 init()?

public void init(){
    faultCode = "";
    faultString ="";
}

public void cleanUp(){
    faultCode = faultException.getFaultCode().toString();
    faultString = faultException.getFaultStringOrReason().toString();
}

@Override
public Customer getCustomer(String customerCode) {
    return null;
}
<bean id="CustomerService" 
         class="examples.CustomerService" init-method="init" destroy-method="cleanUp" />

我认为你试图做的事情对我来说似乎不合理。无论如何,根据我的理解,你想要做的是,当你的 bean 的方法被调用时,你想要调用一些预调用和 post 调用例程。至少两个选择,取决于你的设计:

  1. 如果那个 bean 应该为一个实例服务一个请求,(即你不是同时服务多个调用),那么让你的 bean 成为原型 bean(或其他范围,如果你知道该怎么做)。 Spring 将创建一个新的 bean 来满足您的请求(即,每当您尝试从 Spring 应用上下文获取 bean 时,Spring 应用上下文将为您创建一个新实例)。但是,注入 bean 不会像您现在所做的那样直接。您可能需要工厂方法或使用作用域代理

  2. 如果那个bean应该被实例化一次,并用于服务多个并发请求,AOP几乎是你唯一的选择。