`
ponlya
  • 浏览: 164621 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Spring3之 bean 定制bean特性

阅读更多

Customizing the nature of a bean定制bean特性

Spring提供了几个标志接口(marker interface),这些接口用来改变容器中bean的行为;它们包括InitializingBeanDisposableBean。实现这两个接口的bean在初始化和析构时容器会调用前者的afterPropertiesSet()方法,以及后者的destroy()方法。

com.spring305.test.customBean.po.ImplCustom.java

 

 

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

public class ImplCustom implements InitializingBean,DisposableBean {

	public ImplCustom(){
		System.out.println("this is "+ImplCustom.class+"`s constractor method");
	}
	
	@Override   //InitializingBean
	public void afterPropertiesSet() throws Exception {
		System.out.println("in "+ ImplCustom.class+" afterPropertiesSet() method");
	}

	@Override  //DisposableBean
	public void destroy() throws Exception {
		System.out.println("in "+ ImplCustom.class+" destroy() method");
	}
}

 xml中加入 bean的定义

<bean id="implCustom" class="com.spring305.test.customBean.po.ImplCustom"></bean>

 测试:

@Test
public void test(){
	ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"testCustombean.xml"});
	ImplCustom impl = ctx.getBean("implCustom",ImplCustom.class);
		
}

 同时也可以在xml中用init-method,destroy-method来指定初始化回调与析构回调,这样就不用实现接口了

com.spring305.test.customBean.po.CustomBean.java

public class CustomBean {

	public CustomBean(){
		System.out.println("this is "+CustomBean.class+"`s constractor method");
	}
	
	public void init() {
		System.out.println("in "+ CustomBean.class+" init() method");
	}

	public void destroy()  {
		System.out.println("in "+ CustomBean.class+" destroy() method");
	}
}

 xml中加入

<bean id="customBean" class="com.spring305.test.customBean.po.CustomBean" init-method="init" destroy-method="destroy"></bean>

 测试:

@Test
public void testNoImpliment(){
	AbstractApplicationContext  ctx = new ClassPathXmlApplicationContext(new String[]{"testCustombean.xml"});
	CustomBean impl = ctx.getBean("customBean",CustomBean.class);
	ctx.registerShutdownHook();
}

 最后一句ctx.registerShutdownHook();是2.5文档中定义的一个关闭spring IOC容器的方法.

如上还可以在beans标签下为该标签下所有bean标签来定义初始化回调方法:default-init-method="init"

 

分享到:
评论

相关推荐

    Spring实例化Bean顺序

    3. **@Order和Priority注解**:Spring提供了一个名为`@Order`的注解,可以用于控制Bean的实例化顺序。值越小,Bean优先级越高,先被实例化。此外,`@Priority`注解常用于AOP切面,用于指定切面的执行顺序。 4. **...

    Spring Bean创建初始化流程.docx

    3. **完成Bean工厂初始化**: 在`refresh()`方法内部,调用`finishBeanFactoryInitialization(beanFactory)`。这一步是为了确保所有单例Bean被预先实例化。 4. **预实例化单例Bean**: 进入`...

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    spring中的bean

    3. **Java配置类**:Spring 3.0引入了Java配置,允许我们使用Java类来配置Bean。 ```java @Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } } ``` 这里的`@Bean...

    详解Spring 中如何控制2个bean中的初始化顺序

    Spring 中控制 2 个 bean 的初始化顺序 在 Spring 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 ...

    spring依赖注入bean

    Spring 框架的核心特性之一就是依赖注入(Dependency Injection,简称 DI),这是一种设计模式,它允许我们控制组件之间的耦合,而不是让组件自行创建它们所依赖的对象。这有助于提高代码的可测试性、可维护性和灵活...

    spring动态向容器中添加bean和删除指定bean.md

    spring动态向容器中添加bean和删除指定bean,不需要重启应用

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    Spring bean 动态注册,jar包热替换

    Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...

    Spring中关于Bean的管理的课件

    在Spring框架中,Bean的管理是其核心特性之一,它涉及到Bean的创建、初始化、装配以及销毁等整个生命周期过程。本课件主要涵盖了以下几个关键知识点: 1. **控制反转(IoC)和依赖注入(DI)**:Spring的核心设计...

    spring3零配置注解实现Bean定义

    标题《spring3零配置注解实现Bean定义》中蕴含的知识点主要包括Spring框架中的Bean定义配置方法的演进,特别是从Spring 2.5到Spring 3版本的过渡过程中,对于注解方式实现Bean定义的支持如何被引入和优化。...

    Spring之核心容器bean

    Spring的核心特性之一是依赖注入(Dependency Injection,简称DI)。DI允许你将bean的依赖关系明确地声明出来,而不是硬编码在代码中。这样可以提高代码的可测试性、可维护性和松耦合性。在上面的例子中,`name`属性...

    spring运行过程中动态注册bean

    在Spring框架中,动态注册Bean是一项非常实用的功能,它允许我们在应用运行时向Spring容器添加新的Bean定义。这种能力在很多场景下都是极其有用的,比如根据不同的环境配置加载不同的服务实现,或者在运行时根据某些...

    spring创建bean简单示例

    在Spring框架中,Bean是核心概念,它是Spring管理的对象,通常代表了应用程序中的业务对象或服务。本示例将深入探讨如何在Spring中创建和管理Bean。首先,我们需要理解Spring的IoC(Inversion of Control,控制反转...

    Spring中与Bean相关的接口

    在Spring框架中,Bean是核心概念,它代表了应用程序中的对象。这些对象通过Spring的依赖注入(Dependency Injection,DI)机制来管理和协调。本篇文章将深入探讨Spring中与Bean相关的接口,以及它们如何帮助我们更好...

    Spring Boot: Bean definition overriding

    在本文中,我将讨论棘手的Spring Boot bean定义覆盖机制。 为了使您对该主题更加清楚,让我们从小测验开始。请看下一个简单的例子。 因此,我们有2种配置,它们使用名称beanName实例化bean,在主应用程序中,我们仅...

    spring bean life cycle

    在Spring框架中,Bean生命周期是核心概念之一,它涉及到Bean的创建、初始化、使用和销毁等阶段。了解和掌握Bean生命周期对于开发高质量的Spring应用至关重要。以下是对Spring Bean生命周期的详细解析。 首先,Bean...

    Spring定义bean的三种方式和自动注入

    3. **基于Java配置的Bean定义**: 自Spring 3.0起,还可以通过Java类来定义Bean,这使得配置更加灵活且易于测试。在配置类上使用`@Configuration`注解,然后使用`@Bean`注解来定义方法,该方法返回的对象会被Spring...

    Spring的Bean配置

    综上所述,Spring的Bean配置是其核心机制之一,它涉及到IoC和DI原则的应用,以及多种配置方式的选择,如XML、注解和Java配置。理解并熟练掌握这些概念和实践,对于有效管理Java应用的复杂性至关重要。在实际项目中,...

    java *spring工具类 方便在非spring管理环境中获取bean

    java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...

Global site tag (gtag.js) - Google Analytics