版权声明: https://blog.csdn.net/qq_38386316/article/details/88715439
1.lifecycles callbacks(生命周期回调)
- DrawingApp.java
package org.zcs.spring;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class DrawingApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
//BeanFactory factory = new FileSystemXmlApplicationContext("src/spring.xml");
//Triangle triangle = new Triangle();
AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
context.registerShutdownHook();
Triangle triangle = (Triangle)context.getBean("triangle");
triangle.draw();
}
}
- Triangle.java
package org.zcs.spring;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class Triangle implements InitializingBean, DisposableBean {
private Point pointA;
private Point pointB;
private Point pointC;
public Point getPointA() {
return pointA;
}
public void setPointA(Point pointA) {
this.pointA = pointA;
}
public Point getPointB() {
return pointB;
}
public void setPointB(Point pointB) {
this.pointB = pointB;
}
public Point getPointC() {
return pointC;
}
public void setPointC(Point pointC) {
this.pointC = pointC;
}
public void draw () {
System.out.println("This is PointA: (" +pointA.getX() +"," + pointA.getY() +")");
System.out.println("This is PointB: (" +pointB.getX() +"," + pointB.getY() +")");
System.out.println("This is PointC: (" +pointC.getX() +"," + pointC.getY() +")");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("This is My InitializingBean Initializing");
}
@Override
public void destroy() throws Exception {
// TODO Auto-generated method stub
System.out.println("This is My DisposableBean methods.");
}
public void MyInit() {
System.out.println("This is my first Initlizing");
}
public void CleanUp() {
System.out.println("This is My last cleanuping");
}
}
- spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-init-method="MyInit" default-destroy-method="CleanUp" >
<bean id = "triangle" class= "org.zcs.spring.Triangle" autowire= "byName" init-method="MyInit" destroy-method="CleanUp">
</bean>
<bean id= "pointA" class = "org.zcs.spring.Point">
<property name="x" value = "0"></property>
<property name="y" value = "0"></property>
</bean>
<bean id= "pointB" class = "org.zcs.spring.Point">
<property name="x" value = "20"></property>
<property name="y" value = "0"></property>
</bean>
<bean id= "pointC" class = "org.zcs.spring.Point">
<property name="x" value = "0"></property>
<property name="y" value = "20"></property>
</bean>
</beans>
2.学习总结
- 主要学习了AbstractApplicationContext下的钩子函数的生命周期。
- 在bean中的使用。
- 在xml中的使用
- 在类继承中的使用
- 唯一遇到的问题是在xml中写默认的方法的时候把Destroy写错了,一直在报错。