目录
这一节比上一节轻松,主要关注的就是可以在操作Bean的过程中去调用用户自定义的初始方法和结束方法,这样用户就可在bean实例化后的时机做自定义初始化的业务逻辑,也可在整个Bean操作完成后进行销毁操作的自定义业务逻辑方法,和上节的自定义修改Bean对象是一个意思
本章代码地址:GitHub - dufGIT/spring-sourcecode
目录为:bean-init-destory
就像在xml中配置了init-method以及destroy-method后就会在Bean一系列中去操作对应的方法,所以第一知道要改动的就是需要在bean定义中(BeanDefinition)添加两个属性,initMethodName,destroyMethodName,这样才能够知道xml中的初始化方法以及销毁方法要调用的是什么方法名。
// 初始化方法名称
private String initMethodName;
// 销毁方法名称
private String destroyMethodName;
除此之外我们bean是定义完了,但是怎么放入beanDefinition里后供系统使用呢,所以在bean加载解析时还要加入如下操作
// 从xml解析出来需要初始化调用的方法名称设置
beanDefination.setInitMethodName(initMethod);
// 从xml解析出来需要调用销毁方法名称的设置
beanDefination.setDestroyMethodName(destroyMethodName);
此外,因为是从xml中解析出来的方法名称,如果真的调用方法还要借助反射,通过beanDefinitin里的beanClass对象传递方法名来获取方法,再调用invoke的操作来实现调用初始化或自定义销毁方法。
1.工程目录
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─spring
│ │ │ └─sourcecode
│ │ │ │ SourcecodeApplication.java
│ │ │ │
│ │ │ └─springframework
│ │ │ │ BeanDefinition.java
│ │ │ │ BeanFactory.java
│ │ │ │
│ │ │ ├─beans
│ │ │ │ │ BeansException.java
│ │ │ │ │ PropertyValue.java
│ │ │ │ │ PropertyValues.java
│ │ │ │ │
│ │ │ │ └─factory
│ │ │ │ │ BeanFactory.java
│ │ │ │ │ ConfigurableListableBeanFactory.java
│ │ │ │ │ DisposableBean.java
│ │ │ │ │ HierarchicalBeanFactory.java
│ │ │ │ │ InitializingBean.java
│ │ │ │ │ ListableBeanFactory.java
│ │ │ │ │
│ │ │ │ ├─config
│ │ │ │ │ AutowireCapableBeanFactory.java
│ │ │ │ │ BeanDefinition.java
│ │ │ │ │ BeanFactoryPostProcessor.java
│ │ │ │ │ BeanPostProcessor.java
│ │ │ │ │ BeanReference.java
│ │ │ │ │ ConfigurableBeanFactory.java
│ │ │ │ │ SingletonBeanRegistry.java
│ │ │ │ │
│ │ │ │ ├─support
│ │ │ │ │ AbstractAutowireCapableBeanFactory.java
│ │ │ │ │ AbstractBeanDefinitionReader.java
│ │ │ │ │ AbstractBeanFactory.java
│ │ │ │ │ BeanDefinitionReader.java
│ │ │ │ │ BeanDefinitionRegistry.java
│ │ │ │ │ CglibSubclassingInstantiationStrategy.java
│ │ │ │ │ DefaultListableBeanFactory.java
│ │ │ │ │ DefaultSingletonBeanRegistry.java
│ │ │ │ │ DisposableBeanAdapter.java
│ │ │ │ │ InstantiationStrategy.java
│ │ │ │ │ SimpleInstantiationStrategy.java
│ │ │ │ │
│ │ │ │ └─xml
│ │ │ │ XmlBeanDefinitionReader.java
│ │ │ │
│ │ │ ├─context
│ │ │ │ │ ApplicationContext.java
│ │ │ │ │ ConfigurableApplicationContext.java
│ │ │ │ │
│ │ │ │ └─supprot
│ │ │ │ AbstractApplicationContext.java
│ │ │ │ AbstractRefreshableApplicationContext.java
│ │ │ │ AbstractXmlApplicationContext.java
│ │ │ │ ClassPathXmlApplicationContext.java
│ │ │ │
│ │ │ ├─core
│ │ │ │ └─io
│ │ │ │ ClassPathResource.java
│ │ │ │ DefaultResourceLoader.java
│ │ │ │ FileSystemResource.java
│ │ │ │ Resource.java
│ │ │ │ ResourceLoader.java
│ │ │ │ UrlResource.java
│ │ │ │
│ │ │ └─util
│ │ │ ClassUtils.java
│ │ │
│ │ └─resources
│ │ application.properties
│ │ spring.xml
│ │
│ └─test
│ └─java
│

最低0.47元/天 解锁文章
922

被折叠的 条评论
为什么被折叠?



