当前位置: 首页 > wzjs >正文

霸县网站建设网站制作400哪家好

霸县网站建设,网站制作400哪家好,企业人力资源管理师,网站在哪里实名认证1. Bean 定义阶段 解析配置元数据:Spring 容器会读取配置信息,这些配置信息可以是 XML 文件、Java 注解或者 Java 配置类。容器根据这些配置信息解析出 Bean 的定义,包括 Bean 的类名、作用域、依赖关系等。注册 Bean 定义:解析完…

1. Bean 定义阶段

  • 解析配置元数据:Spring 容器会读取配置信息,这些配置信息可以是 XML 文件、Java 注解或者 Java 配置类。容器根据这些配置信息解析出 Bean 的定义,包括 Bean 的类名、作用域、依赖关系等。
  • 注册 Bean 定义:解析完成后,Spring 会将 Bean 定义信息注册到 BeanDefinitionRegistry 中,BeanDefinitionRegistry 是一个存储 Bean 定义的注册表,它为后续的 Bean 创建提供了基础信息。

2. Bean 实例化阶段

  • 创建 Bean 实例:当需要使用某个 Bean 时,Spring 容器会根据 Bean 定义信息创建 Bean 的实例。创建实例的方式有多种,常见的是使用构造函数创建,也可以通过工厂方法创建。
    • 构造函数创建:Spring 会调用 Bean 类的无参构造函数或者有参构造函数来创建实例。
    • 工厂方法创建:可以使用静态工厂方法或者实例工厂方法来创建 Bean 实例。

3. 属性注入阶段

  • 注入依赖:在 Bean 实例创建完成后,Spring 会根据 Bean 定义中的依赖关系,将其他 Bean 或者配置值注入到当前 Bean 的属性中。注入方式主要有两种:
    • Setter 方法注入:通过调用 Bean 类的 Setter 方法将依赖注入到 Bean 中。
    • 构造函数注入:在创建 Bean 实例时,通过构造函数将依赖传递给 Bean。

4. Bean 初始化阶段

  • 实现 BeanNameAware 接口:如果 Bean 实现了 BeanNameAware 接口,Spring 会调用其 setBeanName 方法,将该 Bean 在容器中的名称传递给它。

收起

java

import org.springframework.beans.factory.BeanNameAware;public class MyBean implements BeanNameAware {private String beanName;@Overridepublic void setBeanName(String name) {this.beanName = name;System.out.println("BeanNameAware: Bean name is " + beanName);}
}

  • 实现 BeanFactoryAware 接口:如果 Bean 实现了 BeanFactoryAware 接口,Spring 会调用其 setBeanFactory 方法,将当前的 BeanFactory 传递给它。

收起

java

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;public class MyBean implements BeanFactoryAware {private BeanFactory beanFactory;@Overridepublic void setBeanFactory(BeanFactory factory) {this.beanFactory = factory;System.out.println("BeanFactoryAware: BeanFactory is set");}
}

  • 实现 ApplicationContextAware 接口:如果 Bean 实现了 ApplicationContextAware 接口,Spring 会调用其 setApplicationContext 方法,将当前的 ApplicationContext 传递给它。

收起

java

import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;public class MyBean implements ApplicationContextAware {private ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext context) {this.applicationContext = context;System.out.println("ApplicationContextAware: ApplicationContext is set");}
}

  • 执行 BeanPostProcessor 的前置处理方法:Spring 会调用所有注册的 BeanPostProcessor 的 postProcessBeforeInitialization 方法,允许开发者在 Bean 初始化之前对其进行额外的处理。

收起

java

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;public class MyBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("BeanPostProcessor: Before initialization of " + beanName);return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("BeanPostProcessor: After initialization of " + beanName);return bean;}
}

  • 实现 InitializingBean 接口:如果 Bean 实现了 InitializingBean 接口,Spring 会调用其 afterPropertiesSet 方法,用于在属性注入完成后进行一些初始化操作。

收起

java

import org.springframework.beans.factory.InitializingBean;public class MyBean implements InitializingBean {@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("InitializingBean: Bean properties are set");}
}

  • 执行自定义的初始化方法:可以在 Bean 定义中指定一个初始化方法,Spring 会在上述步骤完成后调用该方法。

收起

java

public class MyBean {public void init() {System.out.println("Custom init method is called");}
}

在 XML 配置中指定初始化方法:

收起

xml

<bean id="myBean" class="com.example.MyBean" init-method="init"/>

或者使用 Java 配置:

收起

java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class AppConfig {@Bean(initMethod = "init")public MyBean myBean() {return new MyBean();}
}

  • 执行 BeanPostProcessor 的后置处理方法:Spring 会调用所有注册的 BeanPostProcessor 的 postProcessAfterInitialization 方法,允许开发者在 Bean 初始化之后对其进行额外的处理。

5. Bean 使用阶段

经过上述步骤,Bean 已经完成了初始化,可以被应用程序使用。在应用程序的运行过程中,可以通过 Spring 容器获取 Bean 实例,并调用其方法。

6. Bean 销毁阶段

  • 实现 DisposableBean 接口:如果 Bean 实现了 DisposableBean 接口,Spring 会在容器关闭时调用其 destroy 方法,用于进行一些资源释放操作。

收起

java

import org.springframework.beans.factory.DisposableBean;public class MyBean implements DisposableBean {@Overridepublic void destroy() throws Exception {System.out.println("DisposableBean: Bean is being destroyed");}
}

  • 执行自定义的销毁方法:可以在 Bean 定义中指定一个销毁方法,Spring 会在容器关闭时调用该方法。

收起

java

public class MyBean {public void cleanup() {System.out.println("Custom destroy method is called");}
}

在 XML 配置中指定销毁方法:

收起

xml

<bean id="myBean" class="com.example.MyBean" destroy-method="cleanup"/>

或者使用 Java 配置:

收起

java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class AppConfig {@Bean(destroyMethod = "cleanup")public MyBean myBean() {return new MyBean();}
}

综上所述,Spring Bean 的生命周期包括定义、实例化、属性注入、初始化、使用和销毁等阶段,开发者可以通过实现特定的接口或指定自定义方法,在不同阶段对 Bean 进行定制化操作。


文章转载自:

http://NOJLPYRJ.dbnrL.cn
http://Em4Ow2sb.dbnrL.cn
http://oKemusmk.dbnrL.cn
http://AglNbBjU.dbnrL.cn
http://UxdVwDJW.dbnrL.cn
http://j8BOdkKm.dbnrL.cn
http://dM0G5Ir6.dbnrL.cn
http://JHm7PLzt.dbnrL.cn
http://peaLraYa.dbnrL.cn
http://MH2HzreR.dbnrL.cn
http://IpcROvQt.dbnrL.cn
http://A0a0O8t8.dbnrL.cn
http://FmFrkipb.dbnrL.cn
http://u5EgoIAK.dbnrL.cn
http://IeFrfo8c.dbnrL.cn
http://KB0APgh6.dbnrL.cn
http://W9ffORQG.dbnrL.cn
http://gk55zwJl.dbnrL.cn
http://fyrjkbc3.dbnrL.cn
http://T7kqoiUk.dbnrL.cn
http://avKUOBOE.dbnrL.cn
http://UZR4Re66.dbnrL.cn
http://f6NZrcbR.dbnrL.cn
http://ccvwYUy5.dbnrL.cn
http://UFlwRBY2.dbnrL.cn
http://QXNak5qK.dbnrL.cn
http://UwSSnEDb.dbnrL.cn
http://omz5UuLY.dbnrL.cn
http://ACbKARkM.dbnrL.cn
http://TFz8fEzj.dbnrL.cn
http://www.dtcms.com/wzjs/680322.html

相关文章:

  • 如何自己免费制作网站计算机网页设计实训报告
  • asp网站首页模板柳州做网站有kv
  • 现在推广网站最好的方式线上推广有哪些方式
  • wpf做的网站wordpress跨境平台
  • 企业门户网站页面模板栾城住房和城乡建设局网站
  • 上海域名网站深圳建设交易宝安
  • 网站浏览量怎么查看信息网站的建设
  • 怎么做好一个网站使用tag的网站
  • php旅游网站模板下载做网站起什么名字好呢
  • 站酷网页版东莞易宣网站建设公司怎么样
  • 什么网站可以做平面设计赚钱内蒙古做网站公司
  • 用asp做网站流程北京的网站建设
  • 做网站后台学什么专业不想用wordpress
  • 营销型网站建设哪里济南兴田德润优惠吗郑州移动端网站建设
  • vs网站开发教程免费写文案神器
  • 搜索网址网站建站html网页完整代码作业
  • 凡科建站快车有哪些网站可以免费的
  • 网站设计_网站建设_手机网站建设游戏搬砖工作室加盟平台
  • 微信电脑网站是什么原因南宁网站制作工具
  • 博客网站wordpress专业商城网站设计制作
  • 东莞网站建设哪家最好湛江cms模板建站
  • 无锡谁会建商务网站企业网站建设报价清单
  • 网站挣钱怎么做全国建设部网站证书查询
  • 网站焦点图设计免费咨询法律律师在线劳动仲裁
  • 电商网站设计系列品牌设计策划
  • 网站备案后有什么好处响应式个人网站模板
  • 安卓模仿网站开发详细教程网站自助建设源码
  • 搭建dede网站服务器厦门网站设计定制
  • 励志做的很好的网站大兴建站推广
  • 互联壹佰做企业网站我想做个卷帘门网站怎么做