Spring destroy类的顺序通过配置文件中配置“depends-on”来实现,同理init顺序正好相反。
实例:
bean1:
public class Bean1 {
public void destroy() {
System.out.println("bean1 destroy.");
}
}
bean2:
public class Bean2 {
public void destroy() {
System.out.println("bean2 destroy.");
}
}
bean3:
public class Bean3 {
// private Bean1 bean1;
public void destroy() {
System.out.println("bean3 destroy.");
}
}
bean4:
public class Bean4 {
private Bean2 bean2;
public void destroy() {
System.out.println("bean4 destroy.");
}
public void setBean2(Bean2 bean2) {
this.bean2 = bean2;
}
}
配置文件:
applicationContext.xml 写道
<bean id="bean1" class="com.alibaba.cep.collection.advice.Bean1" destroy-method="destroy"></bean>
<bean id="bean2" class="com.alibaba.cep.collection.advice.Bean2" destroy-method="destroy"></bean>
<bean id="bean3" class="com.alibaba.cep.collection.advice.Bean3" depends-on="bean1" destroy-method="destroy"></bean>
<bean id="bean4" class="com.alibaba.cep.collection.advice.Bean4" depends-on="bean2" destroy-method="destroy"></bean>
执行mian:
public static void main(String[] args) {
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
ac.destroy();
}
执行结果:
写道
bean4 destroy.
bean3 destroy.
bean2 destroy.
bean1 destroy.
分享到:
相关推荐
首先,我们要知道Spring IoC容器是通过XML配置文件、注解或Java配置类来管理Bean的生命周期。Bean的实例化顺序取决于以下因素: 1. **定义顺序**:在XML配置中,如果Bean的定义顺序明确,那么按照它们在文件中的...
Spring支持多种配置方式,包括XML、Java配置类(@Configuration)、注解(@Component、@Service等)以及通过@ConfigurationProperties处理YAML或Properties文件。在实验小例子中,我们可能看到这几种配置方式的组合...
在Spring框架中,加载顺序是理解应用程序启动过程的关键部分,涉及到bean的实例化、初始化以及依赖注入等多个环节。本文将详细探讨Spring加载顺序,并结合`@PostConstruct`、`构造方法`以及`@Autowired`等关键注解...
在Spring框架中,Bean的加载顺序是一个重要的概念,它涉及到Spring容器如何管理和初始化Bean的过程。在"spring的bean加载顺序样例项目"中,我们可以通过分析和实验来深入理解这一主题。下面将详细阐述Spring Bean的...
**初始化和销毁顺序** 初始化的顺序如下: 1. 类构造器 2. @PostConstruct注解的方法 3. InitializingBean的afterPropertiesSet()方法 4. XML配置或@Bean注解指定的init-method 销毁的顺序如下: 1. @PreDestroy...
这段代码指定了一个Listener类`ContextLoaderListener`,该类由Spring框架提供,用于在应用程序启动时加载Spring的上下文配置。 #### Filter Filter是在请求到达目标资源之前可以执行预处理操作的对象,并且在响应...
7. **Bean生命周期源码解析**:"05-Spring之Bean生命周期源码解析下-周瑜"将详细阐述Bean从创建到销毁的整个过程,包括初始化、后置处理、正常运行和销毁等阶段,使我们能更好地控制和管理Bean的状态。 8. **模拟...
3. 序列图(Sequence Diagram):序列图展示了对象间的交互顺序,对于理解Spring的AOP(面向切面编程)和IoC(控制反转)的工作流程特别有用。例如,当一个bean被初始化时,Spring容器如何调用各种生命周期方法,...
4. **Bean的生命周期管理**:Spring提供了对Bean从创建到销毁的完整生命周期管理,包括初始化、属性注入、业务处理和销毁等阶段。 5. **数据访问集成**:Spring3增强了对JDBC、ORM(Object-Relational Mapping)...
在Spring MVC中,Spring负责管理Bean的生命周期,包括初始化、装配以及销毁。开发者可以通过配置文件或注解来声明Bean及其依赖关系,Spring会自动管理这些Bean,提供事务管理、安全控制等多种服务。 MyBatis 是一款...
5. **Spring生命周期回调**:除了上述的`@PostConstruct`和`@PreDestroy`,Spring还提供了一些其他的生命周期回调,如`SmartLifecycle`接口,允许在应用启动和停止时控制Bean的启动和停止顺序。`@Application...
2. **Bean的生命周期管理**:Spring管理的对象称为bean,它负责bean的创建、初始化、使用和销毁。可以通过配置文件或注解定义bean的生命周期行为,如单例或多例模式,以及初始化和销毁方法。 3. **IoC容器**:...
在实际项目中,开发者可以通过编写针对单个Bean或整个应用上下文的测试,利用Spring Test提供的`ApplicationContext`加载和销毁机制,确保测试的隔离性。同时,JUnit的@Test注解允许我们定义每个测试方法,通过控制...
- **非侵入式**:Spring 不要求任何特定的类继承或实现特定接口,这使得现有代码可以很容易地与Spring集成。 - **IOC容器**:Spring 提供了强大的依赖注入功能,使得对象之间的耦合度大大降低。 - **AOP支持**:...
Spring提供了一些工具类如`ConcurrentHashMap`、`AtomicInteger`等,它们具有内置的线程安全机制。此外,合理设计并发控制策略,如使用`synchronized`关键字或`Lock`接口,也是确保数据一致性的重要手段。 7. **...
多个Filter可以组成一个过滤链,Spring Boot会根据`FilterRegistrationBean`的顺序进行执行。默认情况下,Spring Boot的内置Filter会先执行,然后是用户自定义的Filter。 总结,Spring Boot的过滤器机制提供了强大...
- **示例**:定义初始化和销毁方法,并验证它们的调用顺序。 - **默认初始化和销毁方法**:Spring 允许自动调用特定的方法作为初始化或销毁回调。 #### Spring Bean 后处理器 Bean 后处理器是在 bean 被创建后对...
在 Spring 中,IOC 主要体现在依赖注入(DI)上,即一个类不再需要主动去获取所依赖的对象,而是被动地接受这些依赖的对象。 ##### 二、IOC 的分类 1. **Set 方式注入**: - 这是最常见的依赖注入方式,通常通过 ...
Spring通过其独特的Bean配置XML文件和上下文工厂类,提供了强大的工具来帮助开发者组织业务层。开发者可以根据上述原则和精神,结合实际项目需求,灵活运用Spring的各种特性来构建高质量的业务层架构。 通过以上...