Affects: v6.0.7
When I configure the default-destroy-method in XML config and there is a bean that does not have a destroy method, a NullPointerException is thrown when closing the ApplicationContext.
Example Config and Code
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd"
default-init-method="myInit"
default-destroy-method="myDestroy">
<bean id="a" class="com.wpp.core.c1.s1_6._3.AInit"/>
<bean id="b" class="com.wpp.core.c1.s1_6._3.BDestroy"/>
</beans>
package com.wpp.core.c1.s1_6._3;
public class AInit {
public void myInit() {
System.out.println("A myInit");
}
}
package com.wpp.core.c1.s1_6._3;
public class BDestroy {
public void myDestroy() {
System.out.println("B myDestroy");
}
}
package com.wpp.core.c1.s1_6._3;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DefaultInitAndDestroyDemo {
public static void main(String[] args) {
var context = new ClassPathXmlApplicationContext("com/wpp/core/c1/s1_6/_3/DefaultInitAndDestroyDemo.xml");
context.close();
}
}
Exception
09:59:03.853 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext -- Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@880ec60
09:59:04.048 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader -- Loaded 2 bean definitions from class path resource [com/wpp/core/c1/s1_6/_3/DefaultInitAndDestroyDemo.xml]
09:59:04.088 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'a'
A myInit
09:59:04.123 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'b'
09:59:04.194 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext -- Closing org.springframework.context.support.ClassPathXmlApplicationContext@880ec60, started on Fri Apr 07 09:59:03 CST 2023
B myDestroy
09:59:04.197 [main] WARN org.springframework.beans.factory.support.DefaultListableBeanFactory -- Destruction of bean with name 'a' threw an exception
java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Method.getParameterCount()" because "destroyMethod" is null
at org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:278)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:238)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1189)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1182)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1084)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1053)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1003)
at com.wpp.core.c1.s1_6._3.DefaultInitAndDestroyDemo.main(DefaultInitAndDestroyDemo.java:25)
Related Issues
Affects: v6.0.7
When I configure the
default-destroy-methodin XML config and there is a bean that does not have a destroy method, aNullPointerExceptionis thrown when closing theApplicationContext.Example Config and Code
Exception
Related Issues