package chapter22;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanClassLoaderAware;
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.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
//如果被装配的Bean实现了相应的接口,就可以在Bean中获得相应的信息。,或者进行某些操作。
public class HelloServiceImpl implements HelloService,
//以下同时为接口的调用的顺序
BeanNameAware,//获得Bean名,也就是<Bean>标签的id属性值。
BeanClassLoaderAware,//获得装载过程中的ClassLoader对象。
BeanFactoryAware,//获得BeanFactory对象
ApplicationContextAware,//获得ApplicationContext对象
InitializingBean, //在Bean的所有属性设置完后,并且在调用完上面接口的方法后,调用此接口的afterPropertiesSet方法
DisposableBean //当销毁Bean时,调用此接口的destroy方法
{
private String greeting;
public String getGreeting() {
// TODO Auto-generated method stub
return "hello "+greeting;
}
//以下同时为方法的调用的顺序
public void setGreeting(String greeting)
{
this.greeting = greeting;
System.out.println("设置greeting属性");
}
public void setBeanName(String name) {
System.out.println("BeanNameAware接口方法 "+name);
}
public void setBeanClassLoader(ClassLoader arg0) {
System.out.println("BeanClassLoaderAware接口方法 "+arg0);
}
public void setBeanFactory(BeanFactory arg0) throws BeansException {
System.out.println("BeanFactoryAware接口方法 "+arg0);
}
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
System.out.println("ApplicationContextAware接口方法 "+applicationContext);
}
public void afterPropertiesSet() throws Exception {
System.out.println("InitializingBean接口方法");
}
public void initMethod(){
System.out.println("<bean>标签的init-Method属性指定的方法,此方法在afterPropertiesSet()之后调用");
}
public void destroy() throws Exception {
System.out.println("destroy");
}
public void destroyMethod(){
System.out.println("<bean>标签的destroy-Method属性指定的方法,此方法在destroy()之后调用");
}
}
applicationContext.xml中的部分:
<bean id="greeting" class="chapter22.HelloServiceImpl" scope="prototype" init-method="initMethod" destroy-method="destroyMethod">
<property name="greeting" >
<value>yjz</value>
</property>
</bean>
分享到:
相关推荐
例如,可以使用 Spring 的 @Order 注解来指定 bean 的初始化顺序,也可以使用 Spring 的生命周期接口(如 InitializingBean)来控制 bean 的初始化顺序。 总结 控制 2 个 bean 的初始化顺序是一个常见的问题,本篇...
在Spring框架中,动态注册Bean是一项非常实用的功能,它允许我们在应用运行时向Spring容器添加新的Bean定义。这种能力在很多场景下都是极其有用的,比如根据不同的环境配置加载不同的服务实现,或者在运行时根据某些...
在Spring框架中,Bean的实例化顺序是一个关键概念,它涉及到如何管理和协调多个Bean的创建与依赖关系。这里,我们主要探讨的是Spring如何通过其IoC(Inversion of Control)容器来实例化Bean,并理解其背后的逻辑。 ...
4. **Spring的应用上下文(ApplicationContext)**:ApplicationContext是Spring的主要接口之一,它提供了获取Bean、处理消息和事件等功能,是Spring应用中的主要入口点。 5. **构造注入(constructor injection)*...
在Spring框架中,`Spring-Aware`接口是一个重要的概念,它允许我们与Spring的应用上下文(ApplicationContext)进行交互,从而获取或操作由Spring管理的Bean。`ApplicationContextAware`是其中的一个典型接口,当...
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class...测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态加载后改为非程序加载目录中的jar实现类。
在Spring框架中,Bean的生命周期管理和作用域是其核心特性之一,它们对于理解Spring如何管理对象的创建、初始化、使用以及销毁至关重要。首先,我们来深入探讨Bean的生命周期。 Spring中的Bean生命周期主要分为两个...
Spring容器是通过`ApplicationContext`接口管理Bean的。要从一个非Spring管理的类中获取Bean,我们需要先创建或获取`ApplicationContext`实例。有多种方式可以做到这一点,例如: 1. 通过`...
当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...
在Spring框架中,Bean是核心概念,它代表了应用程序中的对象,这些对象由Spring容器管理其生命周期和依赖关系。特殊Bean用法主要涉及Spring提供的多种高级特性,包括但不限于工厂方法、 prototype scope、AOP代理、...
此外,Spring提供了一种名为BeanPostProcessor的接口,它允许我们自定义Bean实例化和初始化过程中的逻辑。通过实现`postProcessBeforeInitialization()`和`postProcessAfterInitialization()`方法,可以在Bean初始化...
Spring框架是Java开发中不可或缺的一部分,它以其控制反转(IoC)和依赖注入(DI)的核心特性,极大地简化了应用程序的构建与管理。在本文中,我们将深入探讨Spring中的Bean配置,包括IoC和DI的概念,Bean的配置方式...
- 如果Bean配置了AOP代理,如`@AspectJ`切面或基于接口的代理,那么在Bean实例化后,Spring会创建代理对象,代理对象负责拦截方法调用并执行相关的切面逻辑。 6. **Bean的销毁** - 对于单例Bean,Spring容器在...
在Spring框架中,`@Bean`注解是一个关键的组件,用于声明一个方法将返回的对象作为Spring容器中的bean。在`@Bean`中定义`initMethod`属性,可以指定该bean初始化时需要调用的方法。当`initMethod`被设置为异步执行,...
在整个生命周期中,Spring提供了多种方式来实现Bean的初始化,例如使用init-method参数、InitializingBean接口等。 二、Bean的作用域 Bean的作用域是指Bean的生命周期和可用性。Spring框架提供了多种作用域,例如 ...
本篇文章将深入探讨如何在Spring应用中获取Bean,以及相关的源码分析和实用工具。 首先,Spring容器(ApplicationContext)是管理Bean的中心,它负责Bean的生命周期和依赖注入。获取Bean主要有以下几种方式: 1. *...
本文将围绕“普元EOS-SpringBean开发”这一主题展开讨论,重点讲解SpringBean在普元EOS中的开发与配置流程,以及通过具体案例来深入理解其应用场景。 ### SpringBean开发与配置 #### SpringBean简介 SpringBean是...
本文将深入探讨Spring中的Bean配置,主要基于标题"Spring--2.Spring 中的 Bean 配置-1"及其相关的上下文。 首先,我们要理解什么是Bean。在Spring中,Bean指的是由Spring容器管理的对象,这些对象可以通过XML、注解...
在Spring框架中,Bean的生命周期管理和ApplicationContext的应用是两个核心概念,它们对于理解Spring如何管理和协调应用中的对象至关重要。本文将深入探讨这两个主题,并结合国际化(i18n)和事件传递来阐述它们在...