spring bean初始化

原创 2016年06月01日 15:15:26
package com.provider.bean;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Hello implements InitializingBean,DisposableBean,BeanNameAware,BeanFactoryAware{
	private String name;
	
	public void setName(String name) {
		System.out.println("执行Hello: setName");
		this.name = name;
	}
	

	public Hello(){  
        System.out.println("执行Hello: 构造方法");  
    }  
      
    @PostConstruct  
    public void postConstruct() {    
       System.out.println("执行Hello: postConstruct");    
    }    
      
    
      
    public void initMethod() {  
        System.out.println("执行Hello: init-method");  
    }  
  
    @PreDestroy  
    public void preDestroy()  {  
        System.out.println("执行Hello: preDestroy");  
    }  
      
    public void destroy() throws Exception {  
        System.out.println("执行Hello: destroy");  
    }  
      
    public void destroyMethod() {  
        System.out.println("执行Hello: destroy-method");  
    }

    public void afterPropertiesSet() throws Exception {  
        System.out.println("执行Hello: afterPropertiesSet");   
    }  
    
  
	public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
		System.out.println("执行Hello: setBeanFactory"); 
	}

	public void setBeanName(String name) {
		System.out.println("执行Hello: setBeanName"); 
	}

	  
    public static void main(String[] args) {
    	ClassPathXmlApplicationContext  applicationContext = new ClassPathXmlApplicationContext("spring-core.xml"); 
    	System.out.println(applicationContext.containsBean("hello"));
    	applicationContext.close();
	}

	

}


	 <bean id="hello" class="com.provider.bean.Hello" init-method="initMethod" destroy-method="destroyMethod">
	 <property name="name" value="ppp"></property>
	 </bean>

执行Hello: 构造方法
执行Hello: setName
执行Hello: setBeanName
执行Hello: setBeanFactory
执行Hello: afterPropertiesSet
执行Hello: init-method
true
执行Hello: destroy
执行Hello: destroy-method

过程:

默认构造方法

set方法注入属性

BeanNameAware  setBeanName

BeanFactoryAware setBeanFactory

BeanPostProcessor   postProcessBeforeInitialization

InitializingBean  afterPropertiesSet

init-method

BeanPostProcessor postProcessAfterInitialization

DisposableBean destroy

destroy-method

版权声明:本文为博主原创文章,未经博主允许不得转载。

初始化后可访问Spring管理的Bean

  • 2007年10月17日 10:39
  • 1KB
  • 下载

Spring创建对象初始化bean的时机分为两种形式:

import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframe...

Spring Bean的初始化和销毁方式详解

最近在项目中需要封装kafka的服务,其中使用到了工厂模式,该模式涉及到了Spring Bean的初始化和销毁,如是研究了一番,总结如下,和大家共勉之 Spring Bean的初始化和销毁Bean有几...

Spring容器中的Bean几种初始化方法和销毁方法的先后顺序

Spring 容器中的 Bean 是有生命周期的,Spring 允许 Bean 在初始化完成后以及销毁前执行特定的操作。下面是常用的三种指定特定操作的方法: 通过实现InitializingBe...

Spring中bean的初始化方法

在Spring中有3种初始化bean的方式。分别是1.构造器初始化、2.静态工厂方法初始化、3.实力工厂初始化 1.构造器初始化 使用构造器初始化对象的时候,使用的是类的默认构造方法。...

借助@Conditional实现自定义初始化Spring Bean

本项目使用传统的Spring MVC框架进行搭建,未使用Spring Boot,而需要实现根据用户配置自动选择TCP、UDP、串口等不同协议进行数据获取,还有用户若在内网,实现短信服务动态关闭(wsi...

【Spring学习21】Bean生命周期回调:初始化回调和销毁回调

实现Bean初始化回调和销毁回调各有三种方法,一是实现接口方法,二是在XML配置,三是使用注解初始化回调1、使用接口org.springframework.beans.factory.Initiali...
  • soonfly
  • soonfly
  • 2017年04月06日 21:03
  • 484

Spring Bean 初始化过程

Spring 的几个接口   1.InitializingBean接口,在初始化Bean时容器会调用前者的afterPropertiesSet()方法   2.DisposableBean接口...

Spring应用、原理以及粗读源码系列(一)--框架总述、以Bean为核心的机制(IoC容器初始化以及依赖注入)

总述:spring框架是如今J2EE开发最重要框架之一,为企业级应用提供一系列轻量级解决方案,比如:基于依赖注入的核心机制、基于AOP的声明式事务管理、与多种持久层技术整合、整合后端各种组件等等。贯穿...

Spring容器中的Bean几种初始化方法和销毁方法的先后顺序

Spring 容器中的 Bean 是有生命周期的,Spring 允许 Bean 在初始化完成后以及销毁前执行特定的操作。下面是常用的三种指定特定操作的方法: 通过实现InitializingBe...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring bean初始化
举报原因:
原因补充:

(最多只允许输入30个字)