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

做网站优化找谁猪八戒做网站排名

做网站优化找谁,猪八戒做网站排名,网络架构书籍,信用中国 网站 建设方案目录 一、Bean生命周期的五个阶段 Bean的初始化 二、PostConstruct 和 PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢#xff1f; 一、Bean生命周期的五个阶段 Java 中的公共类称之为 Bean 或 Java Bean#xff0c;而 Spring 中的…  目录 一、Bean生命周期的五个阶段 Bean的初始化 二、PostConstruct 和 PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢 一、Bean生命周期的五个阶段 Java 中的公共类称之为 Bean 或 Java Bean而 Spring 中的 Bean 指的是将对象的生命周期交个 Spring IoC 容器来管理的对象。所以 Spring 中的 Bean 对象在使用时无需通过 new 来创建对象只需要通过 DI依赖注入从 Spring 中取出要使用的对象即可。 Bean作为一个Java对象具有一定的生命周期。它的生命周期包括以下几个阶段 实例化在Java应用程序中Bean对象是通过new关键字或者反射机制来实例化的。在这个阶段Bean对象被创建并分配了内存空间。设置属性(Bean注入和装配)初始化当Bean对象被创建后需要进行初始化包括设置属性值、执行一些初始化操作等。在Spring框架中Bean的初始化可以通过配置文件中的init-method属性进行指定。使用在Bean初始化之后它就可以被应用程序使用了。在使用过程中Bean可能会调用其他对象的方法从而导致其他Bean对象被实例化和初始化。销毁当Bean对象不再被使用时应该将其销毁并释放占用的内存空间。在Spring框架中Bean的销毁可以通过配置文件中的destroy-method属性进行指定。 总的来说Bean对象的生命周期可以通过实例化、初始化、使用和销毁这几个阶段来描述。在Spring框架中Bean的生命周期还可以通过BeanPostProcessor接口来进行扩展和定制。 为了便于理解  我们引用一个现实中的事件来形容   Bean 的⽣命流程看似繁琐但咱们可以以⽣活中的场景来理解它⽐如我们现在需要买⼀栋房⼦那么我们的流程是这样的 1. 先买房实例化从⽆到有 2. 装修设置属性 3. 买家电如洗⾐机、冰箱、电视、空调等[各种]初始化 4. ⼊住使⽤ Bean 5. 卖出去Bean 销毁。  Bean的初始化 执行各种通知(BeanNameAware、BeanFactoryAware)等接口方法初始化的前置方法(PostConstruct)初始化方法初始化的后置方法(PreDestroy) 下面用代码演示整个Bean的生命周期: 我们用构造方式来展示实例化的效果 ,实例化和属性设置是 Java 级别的系统“事件”其操作过程不可⼈⼯⼲预和修改  所以下面没有演示设置属性 package com.example.bean.test;import org.springframework.beans.factory.BeanNameAware; import org.springframework.stereotype.Component;import javax.annotation.PostConstruct; import javax.annotation.PreDestroy;Component public class BeanLifeComponent implements BeanNameAware {private String name;public BeanLifeComponent() {System.out.println(实例化方法执行拉);}public void setBeanName(String s) {System.out.println(执行 BeanName 的通知方法);}PostConstructpublic void postConstruct() {System.out.println(初始化方法执行);}public void use() {System.out.println(使用 Bean);}PreDestroypublic void preDestroy() {System.out.println(销毁方法执行);} }因为初始化的前置方法和后置方法是为所有 Bean 服务的而非为某一个 Bean 服务的所以这两个方法不能写在某个具体的 Bean 中否则这两个方法不会执行。 所以我们另外创建一个类来实现这两个方法 package com.example.bean.test;import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.stereotype.Component;Component public class MyBeanPostProcessor implements BeanPostProcessor {Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if (beanName.equals(beanLifeComponent)) {System.out.println(初始化前置方法执行);}return bean;}Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (beanName.equals(beanLifeComponent)) {System.out.println(初始化后置方法执行);}return bean;} }在得到上下文对象这里  因为我们是使用springboot演示的 所以我们使用ConfigurableApplicationContext 来得到上下文对象 package com.example.bean.test;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext;SpringBootApplication public class DemoApplication {public static void main(String[] args) {// 得到上下文对象并启动 Spring Boot 项目ConfigurableApplicationContext context SpringApplication.run(DemoApplication.class, args);// 获取 BeanBeanLifeComponent component context.getBean(BeanLifeComponent.class);// 使用 Beancomponent.use();// 停止 Spring Boot 项目context.close();} } 结果如下:  二、PostConstruct 和 PreDestroy 各自的效果 当Bean被容器初始化之后会调用PostConstruct的注解方法。当Bean在容器销毁之前调用被PreDestroy注解的方法 代码如下:所以PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上以执行任何初始化。此方法必须在将类放入服务之前调用。支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源用PostConstruct 注释的方法也必须被调用。只有一个方法可以用此注释进行注释。 PostConstructpublic void doPostConstruct(){System.out.println(执行了 新版本PostConstruct 前置初始化方法);}PreDestroypublic void doPreDestroy(){System.out.println(执行新版本 PreDestroy 销毁方法);} PreDestroy 用与在依赖注入完成之前的方法前面执行遵守准则 该方法不得有任何参数该方法的返回类型必须为 void该方法不得抛出已检查异常应用 PostConstruct 的方法可以是 public、protected、package private 或 private该方法不能是 static该方法可以是 final该方法只会被执行一次 三、 实例化和初始化的区别 实例化和属性设置是 Java 级别的系统“事件”其操作过程不可⼈⼯⼲预和修改⽽初始化是给开发者提供的可以在实例化之后类加载完成之前进⾏⾃定义“事件”处理。 四、为什么要先设置属性在进⾏初始化呢 仔细观察下面代码: Servicepublic class UserService {public UserService(){System.out.println(调⽤ User Service 构造⽅法);}public void sayHi(){System.out.println(User Service SayHi.);}} Controllerpublic class UserController {Resourceprivate UserService userService;PostConstructpublic void postConstruct() {userService.sayHi();System.out.println(执⾏ User Controller 构造⽅法);}} 我们可以发现很是为了避免空指针异常。
http://www.yingshimen.cn/news/16216/

相关文章:

  • 外贸网站销售方式网线制作的步骤
  • 网站桥页怎么找织梦网站图片移动
  • 衡水网站设计公司哪家专业网站开发聊天室
  • 公司网站内容相近企业网络规划实施方案
  • 怎么设计门户网站网址大全直接下载
  • 网站建设需要的条件pr培训
  • 做海报网站WordPress蜘蛛爬行插件
  • 民宿网站怎么做网站建设的公司选哪家
  • 成都企业网站建设及公司ppt商务网站的规划与建设总结
  • 华龙建设部网站查不到流量精灵官网
  • flash网站制作工具做网站须要什么技术
  • 如何给网站做电子商务网站怎么建设
  • 国家企业信息查询网站中山网站开发公司
  • 新手做网站需要多久网站301在哪里做
  • 资讯门户网站 dede交互设计主要做什么
  • 网页设计与网站建设程序作业有哪些网站是织梦做的
  • 手机网站排名一个网站两个域名 seo
  • 做个网站要钱吗wordpress 多站点 子目录
  • 注册一个网站工业和信息化部网站备案系统是什么意思
  • 怎么设计公司的网站百度网盟推广太恶心
  • 网站推广销售腾讯会员被告怎么办seo关键词词库
  • 网站建设微金手指下拉12高端装饰设计公司名称
  • ssl外贸网站网站团购报名怎么做
  • 做门户网站赚广告费自己网站内容怎么才能被百度抓取
  • 提高网站建设管理水平手机版企页网站案例
  • ppt免费下载的网站90后做网站月入万元
  • 电梯企业网站制作查法人信息的网站
  • 马鞍山网站建设公司排名汕头站扩建进展
  • 南昌网站外包找厂家用什么软件
  • 建立网站目的邢台建手机网站流程