Customizing the nature of a bean定制bean特性
Spring提供了几个标志接口(marker interface),这些接口用来改变容器中bean的行为;它们包括InitializingBean和DisposableBean。实现这两个接口的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"
分享到:
相关推荐
3. **@Order和Priority注解**:Spring提供了一个名为`@Order`的注解,可以用于控制Bean的实例化顺序。值越小,Bean优先级越高,先被实例化。此外,`@Priority`注解常用于AOP切面,用于指定切面的执行顺序。 4. **...
3. **完成Bean工厂初始化**: 在`refresh()`方法内部,调用`finishBeanFactoryInitialization(beanFactory)`。这一步是为了确保所有单例Bean被预先实例化。 4. **预实例化单例Bean**: 进入`...
在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...
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 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 ...
Spring 框架的核心特性之一就是依赖注入(Dependency Injection,简称 DI),这是一种设计模式,它允许我们控制组件之间的耦合,而不是让组件自行创建它们所依赖的对象。这有助于提高代码的可测试性、可维护性和灵活...
spring动态向容器中添加bean和删除指定bean,不需要重启应用
- **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...
在Spring框架中,Bean的管理是其核心特性之一,它涉及到Bean的创建、初始化、装配以及销毁等整个生命周期过程。本课件主要涵盖了以下几个关键知识点: 1. **控制反转(IoC)和依赖注入(DI)**:Spring的核心设计...
标题《spring3零配置注解实现Bean定义》中蕴含的知识点主要包括Spring框架中的Bean定义配置方法的演进,特别是从Spring 2.5到Spring 3版本的过渡过程中,对于注解方式实现Bean定义的支持如何被引入和优化。...
Spring的核心特性之一是依赖注入(Dependency Injection,简称DI)。DI允许你将bean的依赖关系明确地声明出来,而不是硬编码在代码中。这样可以提高代码的可测试性、可维护性和松耦合性。在上面的例子中,`name`属性...
在Spring框架中,动态注册Bean是一项非常实用的功能,它允许我们在应用运行时向Spring容器添加新的Bean定义。这种能力在很多场景下都是极其有用的,比如根据不同的环境配置加载不同的服务实现,或者在运行时根据某些...
在Spring框架中,Bean是核心概念,它是Spring管理的对象,通常代表了应用程序中的业务对象或服务。本示例将深入探讨如何在Spring中创建和管理Bean。首先,我们需要理解Spring的IoC(Inversion of Control,控制反转...
在Spring框架中,Bean是核心概念,它代表了应用程序中的对象。这些对象通过Spring的依赖注入(Dependency Injection,DI)机制来管理和协调。本篇文章将深入探讨Spring中与Bean相关的接口,以及它们如何帮助我们更好...
在本文中,我将讨论棘手的Spring Boot bean定义覆盖机制。 为了使您对该主题更加清楚,让我们从小测验开始。请看下一个简单的例子。 因此,我们有2种配置,它们使用名称beanName实例化bean,在主应用程序中,我们仅...
在Spring框架中,Bean生命周期是核心概念之一,它涉及到Bean的创建、初始化、使用和销毁等阶段。了解和掌握Bean生命周期对于开发高质量的Spring应用至关重要。以下是对Spring Bean生命周期的详细解析。 首先,Bean...
3. **基于Java配置的Bean定义**: 自Spring 3.0起,还可以通过Java类来定义Bean,这使得配置更加灵活且易于测试。在配置类上使用`@Configuration`注解,然后使用`@Bean`注解来定义方法,该方法返回的对象会被Spring...
综上所述,Spring的Bean配置是其核心机制之一,它涉及到IoC和DI原则的应用,以及多种配置方式的选择,如XML、注解和Java配置。理解并熟练掌握这些概念和实践,对于有效管理Java应用的复杂性至关重要。在实际项目中,...
java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...