2017-11-09 9 views
3

documentationdestroyMethodメソッドの理解方法はBeanです。`close()`や `shutdown()`メソッドを使って型を返す `destroyMethod`を設定します

それは言う:ユーザの利便性として

を、コンテナが@Beanメソッドから返されたオブジェクトに対してdestroyメソッドを推測しようとします。たとえば、@BeanメソッドがApache Commons DBCP BasicDataSourceを返すと、コンテナはそのオブジェクトで利用できるclose()メソッドを認識し、destroyMethodとして自動的に登録します。この 'destroyメソッドの推論'は、現在、 'close'または 'shutdown'というパブリックな引数なしメソッドのみを検出することに限定されています。それは彼らが常に自動的に推論されるようにBean({destroyMethod="close"})は、shutdown()メソッドを持つタイプにclose()方法とBean({destroyMethod="shutdown"})を持つタイプで重複していることを

を意味するのでしょうか?

この場合、すべての場合でdestroyMethod="close"またはdestroyMethod="shutdown"の使用が冗長であることがわかります。私は正しい?

答えて

1

あなたは正しく、ドキュメントを正しく理解しています。あなたが証拠を見たい場合は、DisposableBeanAdapterを見てみましょう:

private static final String CLOSE_METHOD_NAME = "close"; 

private static final String SHUTDOWN_METHOD_NAME = "shutdown"; 

#hasDestroyMethod

public static boolean hasDestroyMethod(Object bean, RootBeanDefinition beanDefinition) { 
     ... 
     if (AbstractBeanDefinition.INFER_METHOD.equals(destroyMethodName)) { 
      return (ClassUtils.hasMethod(bean.getClass(), CLOSE_METHOD_NAME) || 
        ClassUtils.hasMethod(bean.getClass(), SHUTDOWN_METHOD_NAME)); 
     } 
     ... 
    } 

あなたが興味を持っている場合は、フレームワークのその領域を中心に閲覧することができます。

関連する問題