如何在Spring中每次运行init和destroy方法

时间:2015-04-14 03:03:10

标签: java spring aop

我有一个类CustomerService,它是一个Spring bean。在调用getCustomer()之后调用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;
}

2 个答案:

答案 0 :(得分:1)

我认为你要做的事对我来说似乎并不合理。无论如何,根据我的理解,你要做的是,当调用bean的方法时,你想要调用一些预调用和调用后例程。至少有两种选择,具体取决于您的设计:

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

  2. 如果该bean应该被实例化一次,并用于提供多个并发请求,那么AOP几乎是您唯一的其他选择。

答案 1 :(得分:0)

<bean id="CustomerService" 
         class="examples.CustomerService" init-method="init" destroy-method="cleanUp" />