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

男女做那个网站动态图片wordpress 网站上传

男女做那个网站动态图片,wordpress 网站上传,网站开发可选的方案有,wordpress 插件play文章目录Bean 的生命周期执行流程代码演示执行结果源码阅读AbstractAutowireCapableBeanFactorydoCreateBeaninitializeBeanBean 的生命周期 生命周期指的是一个对象从诞生到销毁的整个生命过程#xff0c;我们把这个过程就叫做一个对象的声明周期 Bean 的声明周期分为以下 … 文章目录Bean 的生命周期执行流程代码演示执行结果源码阅读AbstractAutowireCapableBeanFactorydoCreateBeaninitializeBeanBean 的生命周期 生命周期指的是一个对象从诞生到销毁的整个生命过程我们把这个过程就叫做一个对象的声明周期 Bean 的声明周期分为以下 5 个部分 实例化为 Bean 分配空间属性赋值Bean 注入和装配比如 Autowired初始化 执行各种通知如 BeanNameAwareBeanFactoryAwareApplicationContextAware 的接口方法执行初始化方法 xml 定义 init-method使用注解的方式 PostConstruct执行初始化后置方法BeanPostProcessor 使用 Bean销毁 Bean 销毁容器的各种方法如 PreDestoryDisposableBean 接口方法destory-method 执行流程 实例化和属性赋值对应构造方法和 setter 方法的注入。初始化和销毁是用户能自定义扩展的两个阶段可以在实例化之后类加载完成之前进行自定义“事件”处理 比如我们现在需要买一栋房子那么我们的流程是这样的 先买房实例化从无到有装修设置属性买家电如洗衣机冰箱电视空调等[各种]初始化可以注入入住使用 Bean卖房Bean 销毁 执行流程如下图所示 代码演示 Component public class BeanLifeComponent implements BeanNameAware { private UserComponent userComponent; public BeanLifeComponent() { System.out.println(执行构造函数); } public void setUserComponent(UserComponent userComponent) { System.out.println(设置属性 userComponent); this.userComponent userComponent; } Override public void setBeanName(String s) { System.out.println(执行了 setBeanName 方法 s); } /** * 初始化 */ PostConstruct public void postConstruct() { System.out.println(执行 postConstruct()); } public void use() { System.out.println(执行了 use 方法); } /** * 销毁前执行方法 */ public void preDestroy() { System.out.println(执行preDestroy()); } }执行结果 通过运行结果观察 先执行构造函数设置属性Bean 初始化使用 Bean销毁 Bean 源码阅读 以上步骤在源码中皆有体现 AbstractAutowireCapableBeanFactory 创建 Bean 的代码入口在 AbstractAutowireCapableBeanFactory#createBean public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFactoryimplements AutowireCapableBeanFactory {protected Object createBean(String beanName, RootBeanDefinition mbd,Nullable Object[] args) throws BeanCreationException {//...代码省略try {// Give BeanPostProcessors a chance to return a proxy instead of the target bean instance.// 在实例化之前是否有快捷创建的Bean也就是通过 PostProcessorsBeforeInstantiation返回的Bean// 如果存在则会替代原来正常通过target bean生成的bean的流程Object bean resolveBeforeInstantiation(beanName, mbdToUse);if (bean ! null) {return bean;}}catch (Throwable ex) {throw new BeanCreationException(mbdToUse.getResourceDescription(),beanName,BeanPostProcessor before instantiation of bean failed, ex);}try {// 创建Bean// 方法中包含了实例化、属性赋值、初始化过程Object beanInstance doCreateBean(beanName, mbdToUse, args);if (logger.isTraceEnabled()) {logger.trace(Finished creating instance of bean beanName !);}return beanInstance;}//...代码省略} }doCreateBean 点进去继续看源码doCreateBean#createBean protected Object doCreateBean(String beanName, RootBeanDefinition mbd, Nullable Object[] args)throws BeanCreationException {// Instantiate the bean.if (instanceWrapper null) {// 1. 实例化阶段通过反射调用构造函数/工厂方法instanceWrapper createBeanInstance(beanName, mbd, args);}// Initialize the bean instance.Object exposedObject bean;try {// 2. 属性填充阶段依赖注入Autowired/Value等populateBean(beanName, mbd, instanceWrapper);// 3. 初始化阶段Aware接口回调、init-method、PostProcessor处理exposedObject initializeBean(beanName, exposedObject, mbd);}catch (Throwable ex) {// 4. 异常处理区分是否已标记为BeanCreationExceptionif (ex instanceof BeanCreationException beanName.equals(((BeanCreationException) ex).getBeanName())) {throw (BeanCreationException) ex;}else {throw new BeanCreationException(mbd.getResourceDescription(), beanName, Initialization of bean failed, ex);}}return exposedObject; }这三个方法与三个生命周期阶段一一对应 createBeanInstance() -实例化populateBean() -属性赋值initializeBean() -初始化 initializeBean 继续点进去initializeBean // 初始化 Bean protected Object initializeBean(String beanName, Object bean, Nullable RootBeanDefinition mbd) { this.invokeAwareMethods(beanName, bean); Object wrappedBean bean; if (mbd null || !mbd.isSynthetic()) { wrappedBean this.applyBeanPostProcessorsBeforeInitialization(bean, beanName); } try { this.invokeInitMethods(beanName, wrappedBean, mbd); } catch (Throwable ex) { throw new BeanCreationException(mbd ! null ? mbd.getResourceDescription() : null, beanName, ex.getMessage(), ex); } if (mbd null || !mbd.isSynthetic()) { wrappedBean this.applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName); } return wrappedBean; } // 调用的三个 Bean 开头的 Aware 方法 private void invokeAwareMethods(String beanName, Object bean) { if (bean instanceof Aware) { if (bean instanceof BeanNameAware) { BeanNameAware beanNameAware (BeanNameAware)bean; beanNameAware.setBeanName(beanName); } if (bean instanceof BeanClassLoaderAware) { BeanClassLoaderAware beanClassLoaderAware (BeanClassLoaderAware)bean; ClassLoader bcl this.getBeanClassLoader(); if (bcl ! null) { beanClassLoaderAware.setBeanClassLoader(bcl); } } if (bean instanceof BeanFactoryAware) { BeanFactoryAware beanFactoryAware (BeanFactoryAware)bean; beanFactoryAware.setBeanFactory(this); } } }
http://www.pierceye.com/news/103718/

相关文章:

  • 企业网站建设套餐费用网站开发完后期维护重要吗
  • 3营销型网站建设湖北短视频seo推荐
  • 鸿运通网站建设未成年怎么在网上卖东西
  • 郑州网站推广排名公司商会小程序开发一个多少钱啊
  • wordpress单页网站在本页跳转心理网站的建设与维护
  • 哪里可以做网站系统企业管理官网登录入口
  • iis7 网站404错误信息官网下载软件
  • 广州建设网站平台广东seo网站推广代运营
  • 网站 优化 关键字qq官网登录
  • 建设银行园区公积金管理中心网站地方门户网站推广
  • 桂林市网站设计wordpress远程数据库
  • 网站建设多钱怎么做网上卖菜网站
  • 响应式电商网站网站设计常见问题
  • 爱常德网凡科网站可以做seo优化
  • 建设银行手机银行官方网站小程序app公众号的区别
  • 彩票网站维护需要几天企业展示网站建设需要做什么
  • cms网站后台模版惠州网站设计哪家好
  • 海南智能网站建设设计湘潭学校网站建设 x磐石网络
  • 网站建设的入门书籍表格我做视频网站
  • 数据库跟网站内容青岛公司做网站的价格
  • 成都市金牛区建设和交通局网站营销专业网站
  • 免费的视频网站如何赚钱wordpress推广系统
  • 上海酒店团购网站建设网站建设风险分析
  • 做网站的抬头怎么做南昌app定制
  • 深圳市企业网站建设企业品牌设计
  • 做图网站有哪些内容惠州抖音推广
  • 郑州中原区建设局网站公司网站建设素材
  • 企业手机网站源码下载企查查网页版
  • 金科网站建设ps做网站难吗
  • 如何在年报网站上做遗失公告wordpress默认摘要