http://blog.csdn.net/super_ccc/article/details/50728529

1.xml文件

  1. <bean id="aaa" class="com.dingwang.Test.Aaa" init-method="init">
  2. <constructor-arg name="name" value="ddd"></constructor-arg>
  3. </bean>

2.java文件

  1. public Aaa(String name) {
  2. LOGGER.warn("--------------------Aaa-----------------Aaa");
  3. this.setName(name);
  4. }
  5. public void init() {
  6. LOGGER.warn("--------------------Aaa-----------------init");
  7. }
  8. /*
  9. * (non-Javadoc)
  10. * @see
  11. * org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
  12. */
  13. @Override
  14. public void afterPropertiesSet() throws Exception {
  15. LOGGER.warn("--------------------Aaa-----------------afterPropertiesSet");
  16. }

3.执行日志

  1. 10:44:54.116 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'aaa'
  2. 10:44:54.157 [main] WARN  com.dingwang.Test.Aaa - --------------------Aaa-----------------Aaa
  3. 10:44:54.159 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Eagerly caching bean 'aaa' to allow for resolving potential circular references
  4. 10:44:54.171 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Invoking afterPropertiesSet() on bean with name 'aaa'
  5. 10:44:54.172 [main] WARN  com.dingwang.Test.Aaa - --------------------Aaa-----------------afterPropertiesSet
  6. 10:44:54.172 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Invoking init method  'init' on bean with name 'aaa'
  7. 10:44:54.172 [main] WARN  com.dingwang.Test.Aaa - --------------------Aaa-----------------init
  8. 10:44:54.173 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'aaa'

4.结论

执行顺序:构造函数>afterPropertiesSet>init-method

Person类

  1. public class Person {
  2. private int i = 0;
  3. public Person(){
  4. System.out.println("实例化一个对象");
  5. }
  6. public void init(){
  7. System.out.println("调用初始化方法....");
  8. }
  9. public void destory222(){
  10. System.out.println("调用销毁化方法....");
  11. }
  12. }

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  6. <!-- 配置初始化方法和销毁方法,但是如果要销毁方法生效scope="singleton" -->
  7. <bean id="person" class="com.xxc.initAndDestory.domain.Person" scope="singleton" lazy-init="false" init-method="init" destroy-method="destory"></bean>
  8. </beans>

测试类:

  1. public class Test {
  2. public static void main(String[] args) {
  3. //如果要调用销毁方法必须用子类来声明,而不是ApplicationContext,因为ApplicationContext没有close()
  4. ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("com/xxc/initAndDestory/applicationContext.xml");
  5. Person p1 = (Person)ac.getBean("person");
  6. Person p2 = (Person)ac.getBean("person");
  7. ac.close();
  8. }
  9. }

如果用注解方式配置:

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-2.5.xsd">
  9. <context:annotation-config/>
  10. <!-- scope默认是 prototype:getBean()一次创建一个实例-->
  11. <bean id="person" class="com.xxc.initAndDestory.domain.Person"></bean>
  12. </beans>

Person类

    1. public class Person {
    2. private int i = 0;
    3. public Person(){
    4. System.out.println("实例化一个对象");
    5. }
    6. @PostConstruct //初始化方法的注解方式  等同与init-method=init
    7. public void init(){
    8. System.out.println("调用初始化方法....");
    9. }
    10. @PreDestroy //销毁方法的注解方式  等同于destory-method=destory222
    11. public void destory(){
    12. System.out.println("调用销毁化方法....");
    13. }
    14. }

spring bean中构造函数,afterPropertiesSet和init-method的执行顺序的更多相关文章

  1. Spring bean中的properties元素内的name 和 ref都代表什么意思啊?

    <bean id="userAction" class="com.neusoft.gmsbs.gms.user.action.UserAction" sc ...

  2. spring bean中的properties元素内的ref和value的区别;* 和 ** 的区别

    spring bean中的properties元素内的ref和value的区别 至于使用哪个是依据你所用的属性类型决定的. <bean id="sqlSessionFactory&qu ...

  3. spring 基于XML的申明式AspectJ通知的执行顺序

    spring 基于XML的申明式AspectJ通知的执行顺序 关于各种通知的执行顺序,结论:与配置文件中的申明顺序有关 1. XML文件配置说明 图片来源:<Java EE企业级应用开发教程&g ...

  4. Javascript中页面加载完成后优先执行顺序

    Javascript中页面加载完成后优先执行顺序 document优先于windowwindow优先于element //document加载完成执行方法体 document.addEventList ...

  5. spring bean中scope="prototype“的作用

    今天写代码时,遇到个问题,问题大概如下:在写一个新增模块,当各文本框等输入值后,提交存入数据库,跳到其它页面,当再次进入该新增页面时,上次输入的数据还存在. 经过检查发现是,spring配置文件中,配 ...

  6. 如何在静态方法或非Spring Bean中注入Spring Bean

           在项目中有时需要根据需要在自己new一个对象,或者在某些util方法或属性中获取Spring Bean对象,从而完成某些工作,但是由于自己new的对象和util方法并不是受Spring所 ...

  7. 【Spring】Spring bean中id和name的差异

    id和name都是spring 容器中中bean 的唯一标识符. id: 一个bean的唯一标识 , 命名格式必须符合XML ID属性的命名规范 name: 可以用特殊字符,并且一个bean可以用多个 ...

  8. Spring bean 实现初始化、销毁方法的方式及顺序

    Spring 允许 Bean 在初始化完成后以及销毁前执行特定的操作,常用方法有三种: 使用注解,在指定方法上加上@PostConstruct或@PreDestroy注解来制定该方法是在初始化之后还是 ...

  9. Spring filter和拦截器(Interceptor)的区别和执行顺序

    转载自:http://listenup.iteye.com/blog/1559553 1.Filter过滤器只过滤jsp文件不过滤action请求解决方案 解决办法:在web.xml中将filter的 ...

随机推荐

  1. 【转】.NET 4.5 使用async和await关键字调用异步方法

    async和await关键字是.NET 4.5新增加的异步编程方式,通过使用这两个关键字可以轻松便捷的编写异步方法.使用async关键字声明异步方法,使用await关键字等待和获取异步方法返回的结果. ...

  2. ASP.NET Visual Studio2010 发布Web网站问题详解

    今天研究了一下如何发布web网站,之前总是没耐心,遇到点问题就没心情搞了,今天总算有点耐心搞明白了.其实遇到的问题还是挺多的,网上也没有太全的解释,所以结合自己还有别人的方法进行一下总结. 环境:Wi ...

  3. 七、集成swagger2

    1.添加依赖 <!-- swager2 --> <dependency> <groupId>io.springfox</groupId> <art ...

  4. Java基础(十)数据结构

    一.数据结构 1.数据结构的定义 数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或存储效率.数据结构 ...

  5. zookeeper【6】负载均衡

    负载均衡是一种手段,用来把对某种资源的访问分摊给不同的设备,从而减轻单点的压力. 架构图 图中左侧为ZooKeeper集群,右侧上方为工作服务器,下面为客户端.每台工作服务器在启动时都会去zookee ...

  6. TCP基础知识(一)简介与数据包

    TCP详解(1):简介与数据包 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议 应用层向TCP层发送用于网间传输 ...

  7. c#之静态构造函数和单例模式

    1.静态构造函数:在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类 public class A { ; : private static A instance_; publi ...

  8. Java并发—–深入分析synchronized的实现原理

    记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线 ...

  9. mybatis整合spring的时候配置数据库信息文件properties注意事项

    信息后面不能有空格 ,格式要xxx.driver xxx.url 这样

  10. JS原生隐藏显示图片,点击切换图片的效果

    今天要说的内容,看标题就都能知道了!所有知识点一览无遗啊!咱们今天的东西,是纯纯的原生JS代码, 我先说一下要求, 1.有两个按钮,内容为显示,和换, 2.当点击显示的时候,按钮文字变成隐藏,同时图片 ...