07-spring学习-bean的其他配置(了解)
首先需要明确,默认情况下,只要在applicationContext.xml文件里面配置的时候自动进行构造方法初始化。
但是用户也可以实现自己的配置,让其在第一次使用的时候进行初始化,这种操作叫做
延迟加载
lazy-init="true"
范例:延迟加载
public class Emp {
private Integer empno;
private String ename;
}
完整代码:
package com.Spring.Demo;
public class Emp {
private Integer empno;
private String ename;
public Emp() {
System.out.println("************");
}
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
@Override
public String toString() {
return "Emp [empno=" + empno + ", ename=" + ename + "]";
}
}
不进行延迟加载的操作配置:
<bean id="emp" class="com.Spring.Demo.Emp">
<property name="empno" value="20"/>
<property name="ename" value="Fore"/>
</bean>
正常来说只要初始化applicationContext.xml就会执行构造方法初始化。
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
结果:调用了构造方法

延迟加载配置:
<bean id="emp" class="com.Spring.Demo.Emp" lazy-init="true">
<property name="empno" value="20"/>
<property name="ename" value="Fore"/>
</bean>
此时执行:
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
但是结果:并没有调用构造方法。

此时表示延迟加载,当第一次使用这个bean的时候再进行加载。
如下:
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
Emp emp=ctx.getBean("emp",Emp.class);
此时执行结果:

证明此时调用了构造方法进行初始化。
除了此特征:
进行自定义的初始化和销毁方法操作:
lazy-init="true",init-method="init"
例如:现在有一个类,可以在类实例化对象的时候自动执行一个方法进行特定的初始化调用,或者在这个类对象不再需要的时候自动进行销毁方法,
进行资源的释放。
范例:观察初始化和销毁。
package com.Spring.Demo;
public class Group {
public void init()
{
System.out.println("公司进行初始化");
}
public void destroy()
{
System.out.println("公司销毁");
}
}
实际上以上两个方法只有在spring中是可以使用的,而在java运行里面,初始化会依靠构造方法,销毁会依靠finalize()方法。
配置applicationContext()文件--需要明确指定初始化以及销毁方法。
<bean id="group" class="com.Spring.Demo.Group" init-method="init"
destroy-method="destroy"></bean>
执行结果:

运行了初始化操作,而没有运行销毁方法,默认情况下,初始化的操作一定会默认的自动出现,
但是销毁的操作必须明确处理。
调用过程:
package com.Spring.Demo;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestGroup { public static void main(String[] args) {
ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
Group grp=ctx.getBean("group",Group.class);
System.out.println(grp);
ctx.registerShutdownHook();//取消注册,触发销毁
}
}
注意:要想使用方法registerShutdownHook,取消注册,触发销毁事件,调用这个的ctx对象,必须是ApplicationContext类的子类:ClassPathXmlApplicationContext
实例化,父类ApplicationContext没有这个方法。
运行结果:

07-spring学习-bean的其他配置(了解)的更多相关文章
- 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比
[原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...
- Spring学习--Bean 之间的关系
Bean 之间的关系:继承.依赖. Bean 继承: Spring 允许继承 bean 的配置 , 被继承的 bean 称为父 bean , 继承这个父 bean 的 bean 称为子 bean. 子 ...
- spring的bean的注解配置
使用bean的方式配置spring 比较麻烦,开发的时候经常使用注解的方式配置spring. 第一步,创建java项目,导入jar包 第二步,创建spring 的主配置文件 第三步,创建实体类,加注解 ...
- Spring学习-Bean的基本概念知识
4月份开始复习一遍spring相关知识.让自己巩固一下spring大法的深奥益处,所以就看了大佬的博客,转载留下来日后继续研读.认为重点的标记为红色 转载自:http://www.cnblogs.co ...
- Spring配置文件-Bean生命周期配置(init-method方法,destory-method方法)
1.UserDaoImpl类 public class UserDaoImpl implements UserDao { public UserDaoImpl(){ System.out.printl ...
- Spring 学习——Bean容器
Bean容器初始化 基础 org.springframework.beans org.springframework.context BeanFactory提供配置结构和基本功能,加载并初始化Bean ...
- Spring学习--基于 XML 的配置声明切面
正常情况下 , 基于注解的生命要优先于基于 XML 的声明. 通过 AspectJ 注解 , 切面可以与 AspectJ 兼容 , 而基于 XML 的配置则是 Spring 专有的.由于 Aspect ...
- Spring学习-- Bean 的作用域
Bean 的作用域: 在 Spring 中 , 可以在 <bean> 元素的 scope 属性里设置 bean 的作用域. 默认情况下 , Spring 只为每个在 IOC 容器里声明的 ...
- Spring(Bean)4 配置数据源、连接池
<!-- 配置数据源 Mysql c3p0: 连接池. <bean id="dataSource" class="com.mchange.v2.c3p0.Co ...
随机推荐
- MC资源整理
MC模拟简介 蒙特卡罗模拟,因摩纳哥著名的赌场而得名.它能够帮助人们从数学上表述物理.化学.工程.经济学以及环境动力学中一些非常复杂的相互作用. 蒙特卡罗(Monte Carlo)方法,又称随机抽样或 ...
- Java的锁研究
Lock和synchronized JDK1.5以后,在锁机制方面引入了新的锁-Lock,在网上的说法都比较笼统,结合网上的信息和我的理解这里做个总结. java现有的锁机制有两种实现 ...
- 【找规律】计蒜客17118 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E. Maximum Flow
题意:一张有n个点的图,结点被编号为0~n-1,i往所有编号比它大的点j连边,权值为i xor j.给你n,问你最大流. 打个表,别忘了把相邻两项的差打出来,你会发现神奇的规律……你会发现每个答案都是 ...
- 【计算几何】【推导】【补集转化】AtCoder Regular Contest 082 E - ConvexScore
题意:平面上给你N个点.对于一个“凸多边形点集”(凸多边形点集被定义为一个其所有点恰好能形成凸多边形的点集)而言,其对答案的贡献是2^(N个点内在该凸多边形点集形成的凸包内的点数 - 该凸多边形点集的 ...
- [NOIp2017提高组]列队
[NOIp2017提高组]列队 题目大意 一个\(n\times m(n,m\le3\times10^5)\)的方阵,每个格子里的人都有一个编号.初始时第\(i\)行第\(j\)列的编号为\((i-1 ...
- java面试笔试总结(一)--亲生经历的面试题
说明:本文只是自己的一些心得体会,答案也是自己写的,正确与否,还需考证 java笔试题 1java笔试题1 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7 ...
- Problem B: 年龄问题
#include<stdio.h> int xx(int n,int m,int k) { int a; ) { a=k; } else { a=xx(n-,m,k)+m; } retur ...
- 使 PHP 写的网站看上去像 asp 页面
# 使 PHP 代码看上去像 asp 页面 更改Apache 的httpd.conf中AddType application/x-httpd-php .php .phtml改为 AddType app ...
- centos安装lnmp
安装ssh yum install openssh-server ====================== 查看SSH是否安装. ◆输入命令:rpm -qa | grep ssh 注:若没安装SS ...
- 《windows内核安全与驱动开发》ctrl2cap中的ObReferenceObjectByName疑问
国内有关于windows内核驱动这块的书籍实在是甚少,不过好在<windows内核安全与驱动开发>这本书还算不错(内容方面),但是不得不说这本书在许多地方存在着一些细节上的问题.比如我今天 ...