默认情况下只要是在applicationContext.xml文件里面配置"<bean>"都会在Spring的时候自动进行构造方法初始化,但是用户也可以实现自己的配置,让其在第一次使用的时候再进行初始化,这种操作称为延迟加载.
范例:延迟加载
public class Emp { private Integer empno; private String ename; }
<bean id="emp" class="cn.zwb.vo.Emp" lazy-init="true">
<property name="empno" value="7369"></property>
<property name="ename" value="zwb"></property>
</bean>
此时就表示emp这个对象进行了延迟加载,第一次使用这个bean的时候再进行加载
那么除了这一特征之外,在Spring处理过程之中还可以进行自定义的初始化和销毁方法操作.例如:现在有一个类可以在类实例化对的时候自动执行一个方法进行特定1初始化调用, 或者在这个类对象不在需要的时候自动执行一个销毁的方法.进行资源的释放,
范例:观察初始化和销毁
package cn.zwb.vo; public class Company { public void init(){ System.out.println("=======初始化"); } public void destroy(){ System.out.println("=======公司销毁"); } }
实际上设计的两个方法只是在Spring中才可以使用的,而实际的Java运行里面初始化会依靠构造方法,销毁会依靠finalize()方法.
范例:配置applicationContext.xml文件----需要明确的指定初始化与销毁的方法
<bean id="company" class="cn.zwb.vo.Company" init-method="init" destroy-method="destroy"></bean>
默认情况喜爱初始化的操作一定会默认的自动出现.但是销毁的操作必须明确的处理
范例:调用过程
package cn.zwb.TestFruit; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.zwb.vo.Company; public class TestCompany { public static void main(String[] args) { ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); Company vo=ctx.getBean("company",Company.class); System.out.println(vo); ctx.registerShutdownHook();//表示触发销毁. } }
这样的销毁操作在一段时间之内,成为了Spring整合开发的关键,用于进行数据库连接操作