【Spring篇】二.springBean的生命周期及Aware接口

2024-03-28 18:38

本文主要是介绍【Spring篇】二.springBean的生命周期及Aware接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 生命周期

1.1 定义
	<bean id="student" class="com.wpj.bean.Student"></bean>
1.2 初始化
spring容器在初始化的时候会创建一系列对象,同时将对象之间的依赖关系通过注入方式组织起来方式第一种: 实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法会判断有没有实现这个接口,有的话会调用afterPropertiesSet方法第二种: 在xml中配置	init-method="bean中的方法"	(常用)当spring容器加载这个bean初始化的时候就会调用 init-metod中的方法
	<bean id="student" class="com.wpj.bean.Student" init-method="init" />
	public class Student{public void init(){//...}}
1.3 使用
实际开发中从bean中取出该实例,调用方法。
 	@Testpublic void showSpringBean(){// 通过当前相对路径加载spring容器ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");// 根据id获取beanStudent student = (Student) ac.getBean("student");System.out.println(student);}
1.4 销毁
在spring容器停止的时候bean创建的所有实例方式第一种: 实现org.springframework.beans.factory.DisposableBean接口,覆盖destroy方法会判断有没有实现这个接口,有的话会调用destroy方法第二种: 在xml中配置	destroy-method="bean中的方法"当spring容器销毁该bean的时候就会调用 destroy-metod中的方法
	<bean id="student" class="com.wpj.bean.Student" destroy-method="init" />
	public class Student{public void destroy(){//...}}
1.5 配置全局默认初始化和销毁方法
在该容器创建的bean都会先调用init方法,销毁的时候吊笼destroy方法。(根据实际情况考虑是否使用)
<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"default-init-method="init" default-destroy-method="destroy"></bean>
注: 当同时配置三种初始销毁方法实现接口的方法会优先于配置文件的方法且配置了接口的方法的话全局默认的不生效全局默认方式可以不实现接口不覆盖方法,运行无输出无报错

2. Aware

Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以获取相应资源。
通过该接口,可以对spring相应资源进行操作(慎重)因为获取的资源很可能是spring容器中非常核心的内容。
为spring进行简单的扩展提供了方便的入口2.1 ApplicationContextAware向实现了这个接口的bean提供ApplicationContext的信息,该bean必须配到spring容器中并由spring容器去加载。2.1 BeanNameAware向实现了这个接口的bean提供BeanName的信息,该bean必须配到spring容器中并由spring容器去加载。
接口
ApplicationContextAware			上下文
ApplicationEventPublisherAware	事件发布
BeanClassLoaderAware			类加载器
BeanFatoryAware	
BeanNameAware
BootstrapContextAware
LoadTimeWeaverAware
MessageSourceAware
NotificationPublisherAware
PortletConfigAware
PortletContextAware
ResourceLoaderAware
ServletConfigAware
ServletContextAware

3. 案例 : ApplicationContextAware

3.1 定义类实现该接口
public class TestApplicationContextAware implements ApplicationContextAware{@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {System.out.println("applicationContext = " + applicationContext.getBean("testInter"));System.out.println("applicationContext = " + applicationContext.hashCode());}
}
3.2 在spring-aware.xml中
    <bean id="testApplicationContextAware" class="com.wpj.aware.TestApplicationContextAware"></bean>
3.3 Test
public class AwareTest {@Testpublic void test(){ApplicationContext ac = new ClassPathXmlApplicationContext("spring-aware.xml");}
}

目前暂不理解及体会该接口 所以简单演示。。。后续待补充。。。。。

这篇关于【Spring篇】二.springBean的生命周期及Aware接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856401

相关文章

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

SpringBoot整合OpenFeign的完整指南

《SpringBoot整合OpenFeign的完整指南》OpenFeign是由Netflix开发的一个声明式Web服务客户端,它使得编写HTTP客户端变得更加简单,本文为大家介绍了SpringBoot... 目录什么是OpenFeign环境准备创建 Spring Boot 项目添加依赖启用 OpenFeig

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖